@redscope-ai/redscope 1.0.2 → 1.0.4

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 (320) hide show
  1. package/README.en.md +227 -0
  2. package/README.md +227 -0
  3. package/dist/{chunk-0a9hafd6.js → chunk-036f834b.js} +4 -4
  4. package/dist/{chunk-pdbh6mb4.js → chunk-03z007bm.js} +1 -1
  5. package/dist/{chunk-sz7cmg0p.js → chunk-06sz1p1p.js} +23 -23
  6. package/dist/{chunk-vd658a8r.js → chunk-0bd2xpz1.js} +23 -23
  7. package/dist/{chunk-dq5386vr.js → chunk-0bvxx7kk.js} +23 -23
  8. package/dist/{chunk-sz90jhs0.js → chunk-0c67wh3t.js} +23 -23
  9. package/dist/{chunk-v97f7p27.js → chunk-0cpg8qh8.js} +2 -2
  10. package/dist/{chunk-73r0e4zy.js → chunk-0g3eh8kg.js} +26 -26
  11. package/dist/{chunk-6wk3dh1t.js → chunk-0kcbdg3e.js} +25 -25
  12. package/dist/{chunk-qa3df8mx.js → chunk-0mg1t6hr.js} +5 -5
  13. package/dist/{chunk-88c18e2r.js → chunk-0p0wsrb9.js} +24 -24
  14. package/dist/{chunk-ftfv1rr7.js → chunk-0wz570a3.js} +1 -1
  15. package/dist/{chunk-z57v05t0.js → chunk-0z13a78r.js} +2 -2
  16. package/dist/{chunk-gdqtrr9b.js → chunk-120tmt7h.js} +1 -1
  17. package/dist/{chunk-fby80mw1.js → chunk-14sd3grv.js} +3 -3
  18. package/dist/{chunk-b6h5t2bw.js → chunk-15fcqyjv.js} +1 -1
  19. package/dist/{chunk-xqd8sek7.js → chunk-16hc2hjf.js} +24 -24
  20. package/dist/{chunk-5jx3xmwb.js → chunk-16ykwptb.js} +50 -50
  21. package/dist/{chunk-ynddg4k0.js → chunk-1aj2t41p.js} +2 -2
  22. package/dist/{chunk-5cns5ckc.js → chunk-1fc8nbhj.js} +4 -4
  23. package/dist/{chunk-0p12gjh7.js → chunk-1w614kpt.js} +23 -23
  24. package/dist/{chunk-54k3qdfj.js → chunk-1wen8dar.js} +4 -4
  25. package/dist/{chunk-j2vfstyq.js → chunk-221xwc4k.js} +24 -24
  26. package/dist/{chunk-td8tmtxd.js → chunk-23q0bepd.js} +3 -3
  27. package/dist/{chunk-j93yrk0t.js → chunk-24x0sp1j.js} +1 -1
  28. package/dist/{chunk-t41bh398.js → chunk-27qbmcv9.js} +2 -2
  29. package/dist/{chunk-9gbth640.js → chunk-27zgcapj.js} +1 -1
  30. package/dist/{chunk-xxp5mnve.js → chunk-295gf6hp.js} +26 -26
  31. package/dist/{chunk-5t8r33c6.js → chunk-2aeb7pw2.js} +1 -1
  32. package/dist/{chunk-104tfq0e.js → chunk-2f5c8hst.js} +23 -23
  33. package/dist/{chunk-xbjgrc5y.js → chunk-2j01njj0.js} +3 -3
  34. package/dist/{chunk-jqzzyxty.js → chunk-2kz19wy3.js} +23 -23
  35. package/dist/{chunk-etqm5r9t.js → chunk-2xh8v79x.js} +6 -6
  36. package/dist/{chunk-m8v167g7.js → chunk-332wpr5t.js} +23 -23
  37. package/dist/{chunk-nxdtym0r.js → chunk-355ecbty.js} +2 -2
  38. package/dist/{chunk-6fqk1nyd.js → chunk-39mtg69k.js} +1 -1
  39. package/dist/{chunk-b6wthqrh.js → chunk-3apkj8j9.js} +3 -3
  40. package/dist/{chunk-yb2wyq7d.js → chunk-3g7bvgp2.js} +2 -2
  41. package/dist/{chunk-jgncmxwx.js → chunk-3gam18xn.js} +1 -1
  42. package/dist/{chunk-t4r4ymmg.js → chunk-3pdk50ye.js} +2 -2
  43. package/dist/{chunk-dvfpfq1y.js → chunk-3r1f4nb9.js} +31 -31
  44. package/dist/{chunk-49363km2.js → chunk-3v6g9qgv.js} +24 -24
  45. package/dist/{chunk-z8r7rpw1.js → chunk-3yn73eva.js} +3 -3
  46. package/dist/{chunk-d63hynf1.js → chunk-421yegj3.js} +175 -150
  47. package/dist/{chunk-523ks1kz.js → chunk-446rrwzv.js} +23 -23
  48. package/dist/{chunk-ebb4qye7.js → chunk-467w66fx.js} +1 -1
  49. package/dist/{chunk-10vc755g.js → chunk-4b6edzew.js} +2 -2
  50. package/dist/{chunk-z6kb2b1a.js → chunk-4e3x31c9.js} +4 -4
  51. package/dist/{chunk-q5ttyf7q.js → chunk-4gdqn56a.js} +26 -26
  52. package/dist/{chunk-2tfbxs7k.js → chunk-4mmk59bd.js} +2 -2
  53. package/dist/{chunk-cg2j2h4d.js → chunk-4x26rce5.js} +24 -24
  54. package/dist/{chunk-qfxecggv.js → chunk-54gqntpa.js} +1 -1
  55. package/dist/{chunk-rpsjnw2q.js → chunk-54snd7aw.js} +32 -32
  56. package/dist/{chunk-695xzmze.js → chunk-55s1hn26.js} +3 -3
  57. package/dist/{chunk-jppvhrpk.js → chunk-55z891s7.js} +1 -1
  58. package/dist/{chunk-3tvh9ask.js → chunk-56h80trb.js} +5 -5
  59. package/dist/{chunk-tr6mesnp.js → chunk-58wt4m48.js} +23 -23
  60. package/dist/{chunk-t9p2hnze.js → chunk-5d4fyc3y.js} +23 -23
  61. package/dist/{chunk-w60hk3xv.js → chunk-5dtwrtax.js} +8 -8
  62. package/dist/{chunk-m04dm8n6.js → chunk-5eycrht8.js} +24 -24
  63. package/dist/{chunk-g13zbzsa.js → chunk-5pqyshc6.js} +10 -10
  64. package/dist/{chunk-xx6vx8f6.js → chunk-5s2dvnnf.js} +23 -23
  65. package/dist/{chunk-h0r8z7vv.js → chunk-5tkam0h1.js} +2 -2
  66. package/dist/{chunk-w8ry7wbm.js → chunk-5tttr583.js} +23 -23
  67. package/dist/{chunk-eb5m0cje.js → chunk-5xeyth9a.js} +23 -23
  68. package/dist/{chunk-6yedswyz.js → chunk-5yva30am.js} +2 -2
  69. package/dist/{chunk-d0qs0bhj.js → chunk-65b4z2hc.js} +2 -2
  70. package/dist/{chunk-1jcs8jje.js → chunk-666p77sf.js} +23 -23
  71. package/dist/{chunk-yv66t3eg.js → chunk-67006cbc.js} +1 -1
  72. package/dist/{chunk-s6jzsz3n.js → chunk-671txhtq.js} +2 -2
  73. package/dist/{chunk-q15f7rmc.js → chunk-69k6kygz.js} +2 -2
  74. package/dist/{chunk-st31614a.js → chunk-6ezrjes8.js} +5 -5
  75. package/dist/{chunk-013cjfbn.js → chunk-6grhvh8m.js} +25 -25
  76. package/dist/{chunk-f3wwcmqs.js → chunk-6gt42kvj.js} +4 -4
  77. package/dist/{chunk-6vgzgtcq.js → chunk-6hzx0kqr.js} +4 -4
  78. package/dist/{chunk-1816zmwy.js → chunk-6k5ez67k.js} +4 -4
  79. package/dist/{chunk-7br25het.js → chunk-6wthn547.js} +3 -3
  80. package/dist/{chunk-xkbma4az.js → chunk-70cyabpa.js} +1 -1
  81. package/dist/{chunk-pmkmv5xq.js → chunk-75r9z3mk.js} +4 -4
  82. package/dist/{chunk-6eqvbjz1.js → chunk-7fcmqvbz.js} +1 -1
  83. package/dist/{chunk-9jfn86w6.js → chunk-7mys73mz.js} +1 -1
  84. package/dist/{chunk-g9g3r48x.js → chunk-7n9mtd6h.js} +1 -1
  85. package/dist/{chunk-2g80p16a.js → chunk-7nn82y4a.js} +23 -23
  86. package/dist/{chunk-379pafmf.js → chunk-7qew7jy8.js} +1 -1
  87. package/dist/{chunk-5pb1qej3.js → chunk-7v74emt6.js} +23 -23
  88. package/dist/{chunk-e74t64c6.js → chunk-7xsjn6ed.js} +24 -24
  89. package/dist/{chunk-yjq9vesv.js → chunk-847e87x0.js} +5 -5
  90. package/dist/{chunk-8rw4exf2.js → chunk-88dstx77.js} +23 -23
  91. package/dist/{chunk-3vk0gx3f.js → chunk-89yrrbm4.js} +24 -24
  92. package/dist/{chunk-0bnm50r8.js → chunk-8hrc1wfb.js} +23 -23
  93. package/dist/{chunk-yyfhhaj4.js → chunk-8mabxggz.js} +31 -31
  94. package/dist/{chunk-z0bnpkxm.js → chunk-8n99qxye.js} +2 -2
  95. package/dist/{chunk-kg68bm3c.js → chunk-8rtsqyj0.js} +23 -23
  96. package/dist/{chunk-er9d2atp.js → chunk-8w72b8n7.js} +2 -2
  97. package/dist/{chunk-td8k1cy2.js → chunk-94na1xet.js} +2 -2
  98. package/dist/{chunk-x9v59cjd.js → chunk-963mv8y7.js} +29 -29
  99. package/dist/{chunk-62a7ege2.js → chunk-9gmw2hgg.js} +24 -24
  100. package/dist/{chunk-rdxfef3c.js → chunk-9gsd7hq9.js} +24 -24
  101. package/dist/{chunk-hn792grf.js → chunk-9kqnffts.js} +3 -3
  102. package/dist/{chunk-mwj25g37.js → chunk-9phn5khx.js} +1 -1
  103. package/dist/{chunk-g5xsy020.js → chunk-a3chzgp6.js} +26 -26
  104. package/dist/{chunk-6590xf8k.js → chunk-a3px9ec1.js} +25 -25
  105. package/dist/{chunk-x250gdqa.js → chunk-a4jpbt1m.js} +2 -2
  106. package/dist/{chunk-c8sve1h8.js → chunk-a9jm4ykb.js} +24 -24
  107. package/dist/{chunk-tdqsvjmx.js → chunk-aaxz8a5g.js} +1 -1
  108. package/dist/{chunk-9kgpjrjh.js → chunk-ab2nzf9g.js} +2 -2
  109. package/dist/{chunk-x7v777z2.js → chunk-ad48dj0p.js} +24 -24
  110. package/dist/{chunk-1ksgb74k.js → chunk-ad74n91c.js} +24 -24
  111. package/dist/{chunk-fw8hbrnb.js → chunk-akjq2bmp.js} +23 -23
  112. package/dist/{chunk-h922jnmt.js → chunk-am63r8q5.js} +24 -24
  113. package/dist/{chunk-16cag1dr.js → chunk-b0rn9j35.js} +2 -2
  114. package/dist/{chunk-f6egyq4v.js → chunk-b16r8m57.js} +3 -3
  115. package/dist/{chunk-1s89ja0b.js → chunk-b3tykhww.js} +1 -1
  116. package/dist/{chunk-7ffcax4t.js → chunk-b80kvnj3.js} +3 -3
  117. package/dist/{chunk-zdhkmsnc.js → chunk-bazy7696.js} +3 -3
  118. package/dist/{chunk-z3v5rn8e.js → chunk-bbjz65q8.js} +2 -2
  119. package/dist/{chunk-f3qn06sk.js → chunk-bs22gd95.js} +23 -23
  120. package/dist/{chunk-bn9sp37v.js → chunk-bt4jz8p8.js} +3 -3
  121. package/dist/{chunk-9hhw2kfs.js → chunk-bz3k16s2.js} +35 -35
  122. package/dist/{chunk-ncv3dvsr.js → chunk-c20m02k2.js} +27 -27
  123. package/dist/{chunk-qqrpfc4y.js → chunk-c21jsmjg.js} +1 -1
  124. package/dist/{chunk-m514btx2.js → chunk-c4jp71dr.js} +31 -31
  125. package/dist/{chunk-ymf6p35v.js → chunk-c73gzm86.js} +3 -3
  126. package/dist/{chunk-hxnxdefa.js → chunk-cax85b5y.js} +2 -2
  127. package/dist/{chunk-hczknv33.js → chunk-ccw8pse0.js} +1 -1
  128. package/dist/{chunk-frbmkvw3.js → chunk-cfmkc8ha.js} +4 -4
  129. package/dist/{chunk-w6jnm2b8.js → chunk-cpmczx39.js} +4 -4
  130. package/dist/{chunk-2gvh1kgj.js → chunk-cqmsy2s2.js} +343 -414
  131. package/dist/{chunk-1dyyhewf.js → chunk-cszaksy2.js} +24 -24
  132. package/dist/{chunk-jezzx4v0.js → chunk-d15br3ec.js} +3 -3
  133. package/dist/{chunk-ngewr3bg.js → chunk-d5e78pzx.js} +23 -23
  134. package/dist/{chunk-bt9tefv9.js → chunk-d6txmayg.js} +2 -2
  135. package/dist/{chunk-cy4399rn.js → chunk-d9mteq06.js} +24 -24
  136. package/dist/{chunk-5p105eb7.js → chunk-dd89z0aa.js} +9 -9
  137. package/dist/{chunk-486wpvqa.js → chunk-dd9vcswc.js} +3 -3
  138. package/dist/{chunk-cjmw31kd.js → chunk-dfhk2ntg.js} +1 -1
  139. package/dist/{chunk-pnx2erg8.js → chunk-dgbysayg.js} +23 -23
  140. package/dist/{chunk-4n5mx43k.js → chunk-dv8rh387.js} +2 -2
  141. package/dist/{chunk-n956z176.js → chunk-dxa3y9vh.js} +1 -1
  142. package/dist/{chunk-rbe9bvxy.js → chunk-dxh8xx86.js} +24 -24
  143. package/dist/{chunk-2hp9qgpg.js → chunk-dyg4f57z.js} +26 -26
  144. package/dist/{chunk-6bq66tgf.js → chunk-e0vtkfks.js} +25 -25
  145. package/dist/{chunk-0y1717mg.js → chunk-e0wybg90.js} +23 -23
  146. package/dist/{chunk-qp6egmcc.js → chunk-e2vtstkd.js} +1 -1
  147. package/dist/{chunk-x3v28hmm.js → chunk-e30nrxjp.js} +23 -23
  148. package/dist/{chunk-kad1n4nb.js → chunk-e37bqr6g.js} +2 -2
  149. package/dist/{chunk-74rae9nm.js → chunk-ebesh5hz.js} +26 -26
  150. package/dist/{chunk-5eqmp077.js → chunk-eh3zc37z.js} +23 -23
  151. package/dist/{chunk-trmd4gg2.js → chunk-ekty2fdy.js} +4 -4
  152. package/dist/{chunk-1zenc969.js → chunk-es4npmq2.js} +2 -2
  153. package/dist/{chunk-xr1pw3qm.js → chunk-ew39k4e4.js} +1 -1
  154. package/dist/{chunk-6vcejse2.js → chunk-ey68q190.js} +23 -23
  155. package/dist/{chunk-pja8rs75.js → chunk-ezf40808.js} +2 -2
  156. package/dist/{chunk-hmmedbwt.js → chunk-f7tma8gp.js} +1 -1
  157. package/dist/{chunk-yvwv816m.js → chunk-fantdbyf.js} +25 -25
  158. package/dist/{chunk-gfs1qtrf.js → chunk-fcfs8b3t.js} +1 -1
  159. package/dist/{chunk-jep2dbtq.js → chunk-fhcn2wz6.js} +33 -33
  160. package/dist/{chunk-mscdcbx5.js → chunk-fjtzfz1t.js} +1 -1
  161. package/dist/{chunk-5j85cqk8.js → chunk-fxjcm9bp.js} +3 -3
  162. package/dist/{chunk-n59xzept.js → chunk-fyhhtbv5.js} +2 -2
  163. package/dist/{chunk-2g8zs5zr.js → chunk-g0w5w90e.js} +23 -23
  164. package/dist/{chunk-qzb9et4j.js → chunk-g8est5nk.js} +1 -1
  165. package/dist/{chunk-hq6p7kxs.js → chunk-g8nymh97.js} +78 -78
  166. package/dist/{chunk-bm79at54.js → chunk-g8qmawt7.js} +23 -23
  167. package/dist/{chunk-sxthhgtq.js → chunk-gacbt1vp.js} +24 -24
  168. package/dist/{chunk-z9kr1d33.js → chunk-ggdcf448.js} +1 -1
  169. package/dist/{chunk-nnhce0qj.js → chunk-gjvhjywj.js} +1 -1
  170. package/dist/{chunk-hrptc8p9.js → chunk-gk8vxa1h.js} +29 -29
  171. package/dist/{chunk-vsy50d3n.js → chunk-gmrghcqg.js} +2 -2
  172. package/dist/{chunk-gradtbbz.js → chunk-gp6decq8.js} +7 -7
  173. package/dist/{chunk-w96mfvge.js → chunk-grcc3hvf.js} +11 -11
  174. package/dist/{chunk-gbarv3k7.js → chunk-gsgrgg88.js} +1 -1
  175. package/dist/{chunk-33yvkyw0.js → chunk-gw65f5kr.js} +25 -25
  176. package/dist/{chunk-0y8t2zrz.js → chunk-gz2d42y4.js} +24 -24
  177. package/dist/{chunk-naq10fec.js → chunk-h097j67z.js} +3 -3
  178. package/dist/{chunk-xxcmr18s.js → chunk-h4ztym11.js} +4 -4
  179. package/dist/{chunk-qq38zdw8.js → chunk-h5kknb4r.js} +1 -1
  180. package/dist/{chunk-ajwpwxnj.js → chunk-h5zz0vxy.js} +1 -1
  181. package/dist/{chunk-ky13bf33.js → chunk-hem4f4gz.js} +2 -2
  182. package/dist/{chunk-81stzb58.js → chunk-herypewe.js} +15 -15
  183. package/dist/{chunk-hkza0cd7.js → chunk-hmbwmc7q.js} +25 -25
  184. package/dist/{chunk-skqrvfbx.js → chunk-htqfqm8z.js} +23 -23
  185. package/dist/{chunk-ftgcptnt.js → chunk-j1ezfpjx.js} +2 -2
  186. package/dist/{chunk-w5ysbvwj.js → chunk-j1wktfe2.js} +1 -1
  187. package/dist/{chunk-smv9xrkp.js → chunk-j3ta8svw.js} +23 -23
  188. package/dist/{chunk-w8amat34.js → chunk-j8hd6zfs.js} +23 -23
  189. package/dist/{chunk-6gr9yry6.js → chunk-jejvhnkp.js} +23 -23
  190. package/dist/{chunk-2wf4kzn6.js → chunk-jfqzy06p.js} +26 -26
  191. package/dist/{chunk-prr1hp3m.js → chunk-jjjkjjrb.js} +23 -23
  192. package/dist/{chunk-nnj6h7tr.js → chunk-jnb9wjgx.js} +1 -1
  193. package/dist/{chunk-2xfpts3s.js → chunk-js2bptss.js} +1 -1
  194. package/dist/{chunk-g7vjrdnq.js → chunk-js3dkj4e.js} +3 -3
  195. package/dist/{chunk-xyc3rc83.js → chunk-jtnmdy5f.js} +8 -8
  196. package/dist/{chunk-zm1d1g39.js → chunk-jttf1npj.js} +24 -24
  197. package/dist/{chunk-w7vbwv1c.js → chunk-k1gjymwy.js} +24 -24
  198. package/dist/{chunk-a7v94ne1.js → chunk-k4496w4a.js} +23 -23
  199. package/dist/{chunk-5m0wan4r.js → chunk-k6n5g7hc.js} +1 -1
  200. package/dist/{chunk-dpt14kwg.js → chunk-k7xszak2.js} +1 -1
  201. package/dist/{chunk-q2j8w9hh.js → chunk-k8nwt8yq.js} +1 -1
  202. package/dist/{chunk-gphaxbzp.js → chunk-kbv0z6jr.js} +23 -23
  203. package/dist/{chunk-gbaeczfk.js → chunk-krbqgwft.js} +2 -2
  204. package/dist/{chunk-vm8hnwv3.js → chunk-ksrd3ynt.js} +24 -24
  205. package/dist/{chunk-b5q6wcbn.js → chunk-kyvjw1ev.js} +25 -25
  206. package/dist/{chunk-yq9d4f70.js → chunk-m04nccn6.js} +2 -2
  207. package/dist/{chunk-48bjdmpv.js → chunk-m0y0cpwp.js} +1 -1
  208. package/dist/{chunk-y7sc7xhe.js → chunk-m1ssv3qh.js} +23 -23
  209. package/dist/{chunk-vgmhvg0q.js → chunk-m2pwgqsd.js} +3 -3
  210. package/dist/{chunk-81v403z7.js → chunk-m42pxgcb.js} +1 -1
  211. package/dist/{chunk-k5ht0vm5.js → chunk-m8v52bfe.js} +2 -2
  212. package/dist/{chunk-fnfcg4f0.js → chunk-mc2ax0ff.js} +1 -1
  213. package/dist/{chunk-k29gsr13.js → chunk-mfpm6ybz.js} +26 -26
  214. package/dist/{chunk-prg0d45z.js → chunk-mkttdqb0.js} +1 -1
  215. package/dist/{chunk-4d4cxp74.js → chunk-mv6mynna.js} +26 -26
  216. package/dist/{chunk-9253esg2.js → chunk-mva6b6vr.js} +2 -2
  217. package/dist/{chunk-ph3mzdfn.js → chunk-mymg1988.js} +2 -2
  218. package/dist/{chunk-t5qpgf0m.js → chunk-n92fhgcs.js} +24 -24
  219. package/dist/{chunk-30cdkfa4.js → chunk-ncdnfpf9.js} +3 -3
  220. package/dist/{chunk-b7zc3zvs.js → chunk-ned5qknr.js} +1 -1
  221. package/dist/{chunk-v3z07d2h.js → chunk-ned5whgb.js} +3 -3
  222. package/dist/{chunk-vakt3r32.js → chunk-nrbk54ec.js} +23 -23
  223. package/dist/{chunk-vhpx4pxv.js → chunk-nt8g78cp.js} +33 -33
  224. package/dist/{chunk-9rk3smhd.js → chunk-nxgrp26k.js} +1 -1
  225. package/dist/{chunk-zdscb3n0.js → chunk-p07wrh8v.js} +2 -2
  226. package/dist/{chunk-22eyb58s.js → chunk-p3rceszn.js} +2 -2
  227. package/dist/{chunk-qs2nm8jg.js → chunk-p47gqnyf.js} +23 -23
  228. package/dist/{chunk-gw6e7zra.js → chunk-p5c18v29.js} +2 -2
  229. package/dist/{chunk-4fdve91c.js → chunk-p7e3rc2s.js} +2 -2
  230. package/dist/{chunk-wcjjbz3r.js → chunk-p8jpw7d9.js} +79 -79
  231. package/dist/{chunk-asjrf25n.js → chunk-pb9v47qr.js} +1 -1
  232. package/dist/{chunk-7fbjry42.js → chunk-pkq1xaac.js} +25 -25
  233. package/dist/{chunk-gf6znhgw.js → chunk-pmtz5b93.js} +28 -28
  234. package/dist/{chunk-3az1exz0.js → chunk-pn23dh3d.js} +1 -1
  235. package/dist/{chunk-4dhc8vjw.js → chunk-pna15m0n.js} +23 -23
  236. package/dist/{chunk-5crza5wp.js → chunk-pnzmwkqs.js} +29 -29
  237. package/dist/{chunk-a29v6bza.js → chunk-pvrbk0yt.js} +5 -5
  238. package/dist/{chunk-8rqw4xtz.js → chunk-pz64f1f4.js} +23 -23
  239. package/dist/{chunk-p6g3s1r6.js → chunk-q2ypsn4z.js} +2 -2
  240. package/dist/{chunk-faejxgvr.js → chunk-qbgf1yhh.js} +23 -23
  241. package/dist/{chunk-cs7m7zkb.js → chunk-qdg8cqsf.js} +4 -4
  242. package/dist/{chunk-h4q5e1gt.js → chunk-qh6k86c5.js} +23 -23
  243. package/dist/{chunk-aw8japnt.js → chunk-qmgjr273.js} +24 -24
  244. package/dist/{chunk-jjhkr00g.js → chunk-qn0daty2.js} +1 -1
  245. package/dist/{chunk-9aqxhw4p.js → chunk-qny4m4tt.js} +24 -24
  246. package/dist/{chunk-w3vh8trc.js → chunk-qpa41hme.js} +25 -25
  247. package/dist/{chunk-n7wf123a.js → chunk-qq94d59n.js} +2 -2
  248. package/dist/{chunk-mnmwq199.js → chunk-qs2armyz.js} +16 -16
  249. package/dist/{chunk-egwr06fz.js → chunk-qx7t79zw.js} +5 -5
  250. package/dist/{chunk-5nnd31af.js → chunk-r5pyjf4c.js} +134 -134
  251. package/dist/{chunk-hyzk3zw4.js → chunk-r6b6a4wn.js} +23 -23
  252. package/dist/{chunk-c7akrakx.js → chunk-rft32jb4.js} +23 -23
  253. package/dist/{chunk-6fwec1xp.js → chunk-rpdh02rm.js} +1 -1
  254. package/dist/{chunk-4ntj80qy.js → chunk-rq6v7t1w.js} +26 -26
  255. package/dist/{chunk-2ra8mt9x.js → chunk-rrsa4j80.js} +23 -23
  256. package/dist/{chunk-rjn4rnet.js → chunk-rspn97eg.js} +24 -24
  257. package/dist/{chunk-py5b1aep.js → chunk-rtcm253f.js} +2 -2
  258. package/dist/{chunk-bahmwnsn.js → chunk-rxjjktqv.js} +29 -29
  259. package/dist/{chunk-2ws1k5sw.js → chunk-s2t5anwv.js} +174 -107
  260. package/dist/{chunk-n2e6p5ch.js → chunk-s4vr04qe.js} +7 -7
  261. package/dist/{chunk-r9hkv3jc.js → chunk-s5ftgn0c.js} +2 -2
  262. package/dist/{chunk-rz0swd7z.js → chunk-setxbyxk.js} +1 -1
  263. package/dist/{chunk-vb54rdb3.js → chunk-sev48qbb.js} +1 -1
  264. package/dist/{chunk-34md8b93.js → chunk-shehhtmm.js} +24 -24
  265. package/dist/{chunk-zezatygx.js → chunk-sr6gzsr9.js} +27 -27
  266. package/dist/{chunk-d8wb2591.js → chunk-sv49wzz9.js} +26 -26
  267. package/dist/{chunk-85b154cx.js → chunk-szcnh73g.js} +23 -23
  268. package/dist/{chunk-b98mfy3w.js → chunk-t19akzt2.js} +3 -3
  269. package/dist/{chunk-7bkmxa2j.js → chunk-t2fj3szq.js} +36 -36
  270. package/dist/{chunk-kjbzeeq3.js → chunk-t58vyxsc.js} +24 -24
  271. package/dist/{chunk-5p2f741z.js → chunk-t80rws22.js} +4 -4
  272. package/dist/{chunk-xb8ts07v.js → chunk-tcmeaj2t.js} +2 -2
  273. package/dist/{chunk-7z0vyp8n.js → chunk-tprq35e6.js} +5 -5
  274. package/dist/{chunk-chp3mwbs.js → chunk-trgn06h5.js} +23 -23
  275. package/dist/{chunk-h8czbwvw.js → chunk-ttkzr2wm.js} +27 -27
  276. package/dist/{chunk-jysdz43m.js → chunk-twcmxmab.js} +23 -23
  277. package/dist/{chunk-pygcvnyw.js → chunk-tzcrwnrf.js} +2 -2
  278. package/dist/{chunk-q776bz31.js → chunk-v1rct9rt.js} +2 -2
  279. package/dist/{chunk-7hd8avq8.js → chunk-v29vt02a.js} +24 -24
  280. package/dist/{chunk-zvm7r1p5.js → chunk-v3cvnkwf.js} +23 -23
  281. package/dist/{chunk-amcj797c.js → chunk-v5aem470.js} +2 -2
  282. package/dist/{chunk-gr57520m.js → chunk-v9h2j8jz.js} +3 -3
  283. package/dist/{chunk-yqbv4s1f.js → chunk-vex1cb1c.js} +3 -3
  284. package/dist/{chunk-qh6y02pq.js → chunk-vjxys8eq.js} +23 -23
  285. package/dist/{chunk-edfq419a.js → chunk-vk9xcryd.js} +1 -1
  286. package/dist/{chunk-kchqccs2.js → chunk-vt2ft9ke.js} +24 -24
  287. package/dist/{chunk-j2e5mpns.js → chunk-vyadhr4q.js} +29 -29
  288. package/dist/{chunk-rvyxw49b.js → chunk-vz5808gs.js} +23 -23
  289. package/dist/{chunk-a8g3k03j.js → chunk-w56bkvrw.js} +25 -25
  290. package/dist/{chunk-xpzvyj1j.js → chunk-wcdja0c6.js} +1 -1
  291. package/dist/{chunk-yptr92na.js → chunk-wfnrfy93.js} +1 -1
  292. package/dist/{chunk-h2mw6jwy.js → chunk-wnabyty7.js} +17 -17
  293. package/dist/{chunk-rbvm6bfv.js → chunk-wsnxtggw.js} +1 -1
  294. package/dist/{chunk-fyqewn2p.js → chunk-wv68xgt9.js} +26 -26
  295. package/dist/{chunk-y17pjekh.js → chunk-xdv7gpxj.js} +24 -24
  296. package/dist/{chunk-1b1fbrk4.js → chunk-xfgc43at.js} +3 -3
  297. package/dist/{chunk-aednpbab.js → chunk-xfxd82q0.js} +23 -23
  298. package/dist/{chunk-5nx8vatc.js → chunk-xgmvp9gc.js} +23 -23
  299. package/dist/{chunk-csy6z510.js → chunk-xhe9b46n.js} +23 -23
  300. package/dist/{chunk-tcyqt0wz.js → chunk-xs3099pt.js} +31 -31
  301. package/dist/{chunk-x8pae4tf.js → chunk-xw7pszec.js} +32 -32
  302. package/dist/{chunk-q3v5prf1.js → chunk-y0f5vezg.js} +7 -7
  303. package/dist/{chunk-636ev6h8.js → chunk-yddn2bf8.js} +23 -23
  304. package/dist/{chunk-92c8gmhd.js → chunk-yfrh33eq.js} +30 -30
  305. package/dist/{chunk-z38ekz85.js → chunk-ymqv4hyz.js} +5 -5
  306. package/dist/{chunk-48yb88gq.js → chunk-yz2aj1m9.js} +23 -23
  307. package/dist/{chunk-xy8n48n8.js → chunk-z2fr0c07.js} +23 -23
  308. package/dist/{chunk-w49sckwe.js → chunk-z2kd8w3f.js} +25 -25
  309. package/dist/{chunk-qrc16f5d.js → chunk-z4psnrvd.js} +1 -1
  310. package/dist/{chunk-h8q08rtr.js → chunk-z8trftt3.js} +36 -36
  311. package/dist/{chunk-9asmys7j.js → chunk-zaqfb3tz.js} +1 -1
  312. package/dist/{chunk-yptna5wd.js → chunk-zckw0dvy.js} +23 -23
  313. package/dist/{chunk-b0zfnbt3.js → chunk-zeebdzqf.js} +3 -3
  314. package/dist/{chunk-xycdyfp6.js → chunk-zmqdf4tj.js} +29 -29
  315. package/dist/{chunk-33vjfmdb.js → chunk-zpqfyz07.js} +1 -1
  316. package/dist/{chunk-pnwv8156.js → chunk-zq4q74e3.js} +2 -2
  317. package/dist/{chunk-0czbmrsj.js → chunk-zy4bshw5.js} +3 -3
  318. package/dist/cli.js +27 -27
  319. package/package.json +3 -2
  320. package/tools/authorized-egress.referee-provided.json +895 -0
@@ -4242,9 +4242,72 @@ var init_managedEnvConstants = __esm(() => {
4242
4242
  ]);
4243
4243
  });
4244
4244
 
4245
- // src/utils/envConfig.ts
4245
+ // src/utils/authorizedEgressConfig.ts
4246
4246
  import { existsSync, mkdirSync, readFileSync as readFileSync2, writeFileSync } from "fs";
4247
- import { dirname } from "path";
4247
+ import { dirname, join as join3, resolve } from "path";
4248
+ import { fileURLToPath } from "url";
4249
+ function getPreferredRefereeEgressConfigFilePath() {
4250
+ return getPreferredUserConfigFile(REFEREE_EGRESS_CONFIG_FILE);
4251
+ }
4252
+ function ensureUserRefereeEgressConfigFile() {
4253
+ const filePath = getPreferredRefereeEgressConfigFilePath();
4254
+ if (existsSync(filePath)) {
4255
+ return { filePath, created: false, error: null };
4256
+ }
4257
+ try {
4258
+ const template = readBundledRefereeEgressTemplate();
4259
+ const content = prepareUserRefereeEgressConfigContent(template, filePath);
4260
+ mkdirSync(dirname(filePath), { recursive: true });
4261
+ writeFileSync(filePath, content, {
4262
+ encoding: "utf-8",
4263
+ mode: 384
4264
+ });
4265
+ return { filePath, created: true, error: null };
4266
+ } catch (error) {
4267
+ return {
4268
+ filePath,
4269
+ created: false,
4270
+ error: error instanceof Error ? error : new Error(String(error))
4271
+ };
4272
+ }
4273
+ }
4274
+ function readBundledRefereeEgressTemplate() {
4275
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
4276
+ const argvEntry = process.argv[1] ? dirname(process.argv[1]) : undefined;
4277
+ const candidates = [
4278
+ process.env.REDSCOPE_REFEREE_EGRESS_TEMPLATE_PATH,
4279
+ resolve(moduleDir, "../../tools", REFEREE_EGRESS_CONFIG_FILE),
4280
+ resolve(moduleDir, "../tools", REFEREE_EGRESS_CONFIG_FILE),
4281
+ argvEntry ? resolve(argvEntry, "../tools", REFEREE_EGRESS_CONFIG_FILE) : undefined,
4282
+ argvEntry ? resolve(argvEntry, "../../tools", REFEREE_EGRESS_CONFIG_FILE) : undefined,
4283
+ resolve(process.cwd(), "tools", REFEREE_EGRESS_CONFIG_FILE)
4284
+ ].filter((path) => Boolean(path));
4285
+ for (const candidate of uniquePaths(candidates)) {
4286
+ if (existsSync(candidate)) {
4287
+ return readFileSync2(candidate, "utf-8");
4288
+ }
4289
+ }
4290
+ throw new Error(`Could not find bundled ${REFEREE_EGRESS_CONFIG_FILE} template`);
4291
+ }
4292
+ function prepareUserRefereeEgressConfigContent(template, targetFilePath) {
4293
+ const parsed = JSON.parse(template);
4294
+ parsed.policy ??= {};
4295
+ parsed.policy.statePath = join3(dirname(targetFilePath), REFEREE_EGRESS_STATE_FILE);
4296
+ parsed.policy.notes ??= [];
4297
+ if (!parsed.policy.notes.includes("This user-level copy is safe to edit; RedScope will not overwrite it after creation.")) {
4298
+ parsed.policy.notes.push("This user-level copy is safe to edit; RedScope will not overwrite it after creation.");
4299
+ }
4300
+ return `${JSON.stringify(parsed, null, 2)}
4301
+ `;
4302
+ }
4303
+ var REFEREE_EGRESS_CONFIG_FILE = "authorized-egress.referee-provided.json", REFEREE_EGRESS_STATE_FILE = "redscope-egress-referee-provided-state.json";
4304
+ var init_authorizedEgressConfig = __esm(() => {
4305
+ init_redscopeCompat();
4306
+ });
4307
+
4308
+ // src/utils/envConfig.ts
4309
+ import { existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync as readFileSync3, writeFileSync as writeFileSync2 } from "fs";
4310
+ import { dirname as dirname2 } from "path";
4248
4311
  function resetEnvConfigCache() {
4249
4312
  envConfigCache = undefined;
4250
4313
  }
@@ -4279,9 +4342,10 @@ function getEnvConfigEnvironment() {
4279
4342
  return { ...envConfigCache };
4280
4343
  }
4281
4344
  ensureEnvConfigFile();
4345
+ ensureUserRefereeEgressConfigFile();
4282
4346
  const merged = {};
4283
4347
  for (const filePath of getReadableEnvConfigFiles()) {
4284
- Object.assign(merged, parseEnvConfig(readFileSync2(filePath, "utf-8")));
4348
+ Object.assign(merged, parseEnvConfig(readFileSync3(filePath, "utf-8")));
4285
4349
  }
4286
4350
  const expanded = expandEnvConfigEnvironment(merged);
4287
4351
  envConfigCache = expanded;
@@ -4300,7 +4364,7 @@ function updateEnvConfigValues(values) {
4300
4364
  if (Object.keys(values).length === 0) {
4301
4365
  return { error: null, filePath };
4302
4366
  }
4303
- const content = existsSync(filePath) ? readFileSync2(filePath, "utf-8") : "";
4367
+ const content = existsSync2(filePath) ? readFileSync3(filePath, "utf-8") : "";
4304
4368
  const updated = upsertEnvConfigContent(content, values);
4305
4369
  writeEnvConfigFile(filePath, updated);
4306
4370
  resetEnvConfigCache();
@@ -4405,13 +4469,13 @@ function ensureEnvConfigFile() {
4405
4469
  writeEnvConfigFile(getPreferredEnvConfigFilePath(), content);
4406
4470
  }
4407
4471
  function getReadableEnvConfigFiles() {
4408
- return uniquePaths(getEnvConfigFilePaths().filter((path) => existsSync(path))).reverse();
4472
+ return uniquePaths(getEnvConfigFilePaths().filter((path) => existsSync2(path))).reverse();
4409
4473
  }
4410
4474
  function readLegacyDotEnvForMigration() {
4411
4475
  const merged = {};
4412
- const files = uniquePaths(getUserConfigFiles(LEGACY_DOTENV_FILE).filter((path) => existsSync(path))).reverse();
4476
+ const files = uniquePaths(getUserConfigFiles(LEGACY_DOTENV_FILE).filter((path) => existsSync2(path))).reverse();
4413
4477
  for (const filePath of files) {
4414
- Object.assign(merged, parseEnvConfig(readFileSync2(filePath, "utf-8")));
4478
+ Object.assign(merged, parseEnvConfig(readFileSync3(filePath, "utf-8")));
4415
4479
  }
4416
4480
  return merged;
4417
4481
  }
@@ -4527,6 +4591,8 @@ function createEnvConfigTemplate(values, migratedFromDotEnv) {
4527
4591
  "# REDSCOPE_AUTO_EGRESS: 1 enables automatic authorized egress; 0 disables it.",
4528
4592
  "# REDSCOPE_AUTO_EGRESS=0",
4529
4593
  "# REDSCOPE_AUTO_EGRESS_CONFIG: config used when automatic egress is enabled.",
4594
+ "# RedScope creates authorized-egress.referee-provided.json next to this",
4595
+ "# env.config on first startup; edit that user-level copy for referee IPs.",
4530
4596
  "# REDSCOPE_AUTO_EGRESS_CONFIG=tools/authorized-egress.referee-provided.json",
4531
4597
  "# REDSCOPE_EGRESS_POOL: egress pool id from the authorized egress config.",
4532
4598
  "# REDSCOPE_EGRESS_POOL=referee-provided-traffic-simulation",
@@ -4642,8 +4708,8 @@ function createEnvConfigTemplate(values, migratedFromDotEnv) {
4642
4708
  `;
4643
4709
  }
4644
4710
  function writeEnvConfigFile(filePath, content) {
4645
- mkdirSync(dirname(filePath), { recursive: true });
4646
- writeFileSync(filePath, content, {
4711
+ mkdirSync2(dirname2(filePath), { recursive: true });
4712
+ writeFileSync2(filePath, content, {
4647
4713
  encoding: "utf-8",
4648
4714
  mode: 384
4649
4715
  });
@@ -4651,7 +4717,7 @@ function writeEnvConfigFile(filePath, content) {
4651
4717
  function hasEnvConfigRuntimeModelValues() {
4652
4718
  const merged = {};
4653
4719
  for (const filePath of getReadableEnvConfigFiles()) {
4654
- Object.assign(merged, parseEnvConfig(readFileSync2(filePath, "utf-8")));
4720
+ Object.assign(merged, parseEnvConfig(readFileSync3(filePath, "utf-8")));
4655
4721
  }
4656
4722
  return Object.keys(merged).some(isRuntimeModelConfigKey);
4657
4723
  }
@@ -4794,6 +4860,7 @@ var ENV_CONFIG_FILE = "env.config", LEGACY_DOTENV_FILE = ".env", ENV_KEY_PATTERN
4794
4860
  var init_envConfig = __esm(() => {
4795
4861
  init_redscopeCompat();
4796
4862
  init_managedEnvConstants();
4863
+ init_authorizedEgressConfig();
4797
4864
  ENV_KEY_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
4798
4865
  RUNTIME_MODEL_CONFIG_KEYS = new Set([
4799
4866
  "REDSCOPE_MODEL_PROVIDER",
@@ -5095,7 +5162,7 @@ var init_configConstants = __esm(() => {
5095
5162
  // src/utils/config.ts
5096
5163
  import { randomBytes } from "crypto";
5097
5164
  import { unwatchFile, watchFile } from "fs";
5098
- import { basename, dirname as dirname2, join as join3, resolve } from "path";
5165
+ import { basename, dirname as dirname3, join as join4, resolve as resolve2 } from "path";
5099
5166
  function createDefaultGlobalConfig() {
5100
5167
  return {
5101
5168
  numStartups: 0,
@@ -5160,7 +5227,7 @@ function computeTrustDialogAccepted() {
5160
5227
  if (pathConfig?.hasTrustDialogAccepted) {
5161
5228
  return true;
5162
5229
  }
5163
- const parentPath = normalizePathForConfigKey(resolve(currentPath, ".."));
5230
+ const parentPath = normalizePathForConfigKey(resolve2(currentPath, ".."));
5164
5231
  if (parentPath === currentPath) {
5165
5232
  break;
5166
5233
  }
@@ -5170,11 +5237,11 @@ function computeTrustDialogAccepted() {
5170
5237
  }
5171
5238
  function isPathTrusted(dir) {
5172
5239
  const config = getGlobalConfig();
5173
- let currentPath = normalizePathForConfigKey(resolve(dir));
5240
+ let currentPath = normalizePathForConfigKey(resolve2(dir));
5174
5241
  while (true) {
5175
5242
  if (config.projects?.[currentPath]?.hasTrustDialogAccepted)
5176
5243
  return true;
5177
- const parentPath = normalizePathForConfigKey(resolve(currentPath, ".."));
5244
+ const parentPath = normalizePathForConfigKey(resolve2(currentPath, ".."));
5178
5245
  if (parentPath === currentPath)
5179
5246
  return false;
5180
5247
  currentPath = parentPath;
@@ -5370,7 +5437,7 @@ function getCustomApiKeyStatus(truncatedApiKey) {
5370
5437
  return "new";
5371
5438
  }
5372
5439
  function saveConfig(file, config, defaultConfig) {
5373
- const dir = dirname2(file);
5440
+ const dir = dirname3(file);
5374
5441
  const fs = getFsImplementation();
5375
5442
  fs.mkdirSync(dir);
5376
5443
  const filteredConfig = pickBy_default(config, (value, key) => jsonStringify(value) !== jsonStringify(defaultConfig[key]));
@@ -5384,7 +5451,7 @@ function saveConfig(file, config, defaultConfig) {
5384
5451
  }
5385
5452
  function saveConfigWithLock(file, createDefault, mergeFn) {
5386
5453
  const defaultConfig = createDefault();
5387
- const dir = dirname2(file);
5454
+ const dir = dirname3(file);
5388
5455
  const fs = getFsImplementation();
5389
5456
  fs.mkdirSync(dir);
5390
5457
  let release;
@@ -5450,14 +5517,14 @@ function saveConfigWithLock(file, createDefault, mergeFn) {
5450
5517
  const mostRecentTimestamp = mostRecentBackup ? Number(mostRecentBackup.split(".backup.").pop()) : 0;
5451
5518
  const shouldCreateBackup = Number.isNaN(mostRecentTimestamp) || Date.now() - mostRecentTimestamp >= MIN_BACKUP_INTERVAL_MS;
5452
5519
  if (shouldCreateBackup) {
5453
- const backupPath = join3(backupDir, `${fileBase}.backup.${Date.now()}`);
5520
+ const backupPath = join4(backupDir, `${fileBase}.backup.${Date.now()}`);
5454
5521
  fs.copyFileSync(file, backupPath);
5455
5522
  }
5456
5523
  const MAX_BACKUPS = 5;
5457
5524
  const backupsForCleanup = shouldCreateBackup ? fs.readdirStringSync(backupDir).filter((f) => f.startsWith(`${fileBase}.backup.`)).sort().reverse() : existingBackups;
5458
5525
  for (const oldBackup of backupsForCleanup.slice(MAX_BACKUPS)) {
5459
5526
  try {
5460
- fs.unlinkSync(join3(backupDir, oldBackup));
5527
+ fs.unlinkSync(join4(backupDir, oldBackup));
5461
5528
  } catch {}
5462
5529
  }
5463
5530
  } catch (e) {
@@ -5508,15 +5575,15 @@ function findMostRecentBackup(file) {
5508
5575
  const backups = fs.readdirStringSync(backupDir).filter((f) => f.startsWith(`${fileBase}.backup.`)).sort();
5509
5576
  const mostRecent = backups.at(-1);
5510
5577
  if (mostRecent) {
5511
- return join3(backupDir, mostRecent);
5578
+ return join4(backupDir, mostRecent);
5512
5579
  }
5513
5580
  } catch {}
5514
- const fileDir = dirname2(file);
5581
+ const fileDir = dirname3(file);
5515
5582
  try {
5516
5583
  const backups = fs.readdirStringSync(fileDir).filter((f) => f.startsWith(`${fileBase}.backup.`)).sort();
5517
5584
  const mostRecent = backups.at(-1);
5518
5585
  if (mostRecent) {
5519
- return join3(fileDir, mostRecent);
5586
+ return join4(fileDir, mostRecent);
5520
5587
  }
5521
5588
  const legacyBackup = `${file}.backup`;
5522
5589
  try {
@@ -5599,7 +5666,7 @@ Claude configuration file at ${file} is corrupted: ${error.message}
5599
5666
  const currentContent = fs.readFileSync(file, { encoding: "utf-8" });
5600
5667
  for (const backup of existingCorruptedBackups) {
5601
5668
  try {
5602
- const backupContent = fs.readFileSync(join3(corruptedBackupDir, backup), { encoding: "utf-8" });
5669
+ const backupContent = fs.readFileSync(join4(corruptedBackupDir, backup), { encoding: "utf-8" });
5603
5670
  if (currentContent === backupContent) {
5604
5671
  alreadyBackedUp = true;
5605
5672
  break;
@@ -5607,7 +5674,7 @@ Claude configuration file at ${file} is corrupted: ${error.message}
5607
5674
  } catch {}
5608
5675
  }
5609
5676
  if (!alreadyBackedUp) {
5610
- corruptedBackupPath = join3(corruptedBackupDir, `${fileBase}.corrupted.${Date.now()}`);
5677
+ corruptedBackupPath = join4(corruptedBackupDir, `${fileBase}.corrupted.${Date.now()}`);
5611
5678
  try {
5612
5679
  fs.copyFileSync(file, corruptedBackupPath);
5613
5680
  logForDebugging(`Corrupted config backed up to: ${corruptedBackupPath}`, {
@@ -5757,13 +5824,13 @@ function getMemoryPath(memoryType) {
5757
5824
  const cwd = getOriginalCwd();
5758
5825
  switch (memoryType) {
5759
5826
  case "User":
5760
- return join3(getClaudeConfigHomeDir(), "CLAUDE.md");
5827
+ return join4(getClaudeConfigHomeDir(), "CLAUDE.md");
5761
5828
  case "Local":
5762
- return join3(cwd, "CLAUDE.local.md");
5829
+ return join4(cwd, "CLAUDE.local.md");
5763
5830
  case "Project":
5764
- return join3(cwd, "CLAUDE.md");
5831
+ return join4(cwd, "CLAUDE.md");
5765
5832
  case "Managed":
5766
- return join3(getManagedFilePath(), "CLAUDE.md");
5833
+ return join4(getManagedFilePath(), "CLAUDE.md");
5767
5834
  case "AutoMem":
5768
5835
  return getAutoMemEntrypoint();
5769
5836
  }
@@ -5771,10 +5838,10 @@ function getMemoryPath(memoryType) {
5771
5838
  return "";
5772
5839
  }
5773
5840
  function getManagedClaudeRulesDir() {
5774
- return join3(getManagedFilePath(), ".claude", "rules");
5841
+ return join4(getManagedFilePath(), ".claude", "rules");
5775
5842
  }
5776
5843
  function getUserClaudeRulesDir() {
5777
- return join3(getClaudeConfigHomeDir(), "rules");
5844
+ return join4(getClaudeConfigHomeDir(), "rules");
5778
5845
  }
5779
5846
  function _setGlobalConfigCacheForTesting(config) {
5780
5847
  globalConfigCache.config = config;
@@ -5886,7 +5953,7 @@ var init_config = __esm(() => {
5886
5953
  if (gitRoot) {
5887
5954
  return normalizePathForConfigKey(gitRoot);
5888
5955
  }
5889
- return normalizePathForConfigKey(resolve(originalCwd));
5956
+ return normalizePathForConfigKey(resolve2(originalCwd));
5890
5957
  });
5891
5958
  _getConfigForTesting = getConfig;
5892
5959
  _wouldLoseAuthStateForTesting = wouldLoseAuthState;
@@ -5894,7 +5961,7 @@ var init_config = __esm(() => {
5894
5961
 
5895
5962
  // src/utils/userAgent.ts
5896
5963
  function getClaudeCodeUserAgent() {
5897
- return `claude-code/${"1.0.2"}`;
5964
+ return `claude-code/${"1.0.4"}`;
5898
5965
  }
5899
5966
  var init_userAgent = () => {};
5900
5967
 
@@ -5917,7 +5984,7 @@ function getUserAgent() {
5917
5984
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
5918
5985
  const workload = getWorkload();
5919
5986
  const workloadSuffix = workload ? `, workload/${workload}` : "";
5920
- return `claude-cli/${"1.0.2"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
5987
+ return `claude-cli/${"1.0.4"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
5921
5988
  }
5922
5989
  function getMCPUserAgent() {
5923
5990
  const parts = [];
@@ -5931,7 +5998,7 @@ function getMCPUserAgent() {
5931
5998
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
5932
5999
  }
5933
6000
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
5934
- return `claude-code/${"1.0.2"}${suffix}`;
6001
+ return `claude-code/${"1.0.4"}${suffix}`;
5935
6002
  }
5936
6003
  function getWebFetchUserAgent() {
5937
6004
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -6070,7 +6137,7 @@ var init_user = __esm(() => {
6070
6137
  deviceId,
6071
6138
  sessionId: getSessionId(),
6072
6139
  email: getEmail(),
6073
- appVersion: "1.0.2",
6140
+ appVersion: "1.0.4",
6074
6141
  platform: getHostPlatformForAnalytics(),
6075
6142
  organizationUuid,
6076
6143
  accountUuid,
@@ -6671,8 +6738,8 @@ class ExportOperation {
6671
6738
  _exportScheduledPromise;
6672
6739
  _exportScheduledResolve;
6673
6740
  constructor(exporter, logRecords, exportTimeoutMillis) {
6674
- this._exportScheduledPromise = new Promise((resolve2) => {
6675
- this._exportScheduledResolve = resolve2;
6741
+ this._exportScheduledPromise = new Promise((resolve3) => {
6742
+ this._exportScheduledResolve = resolve3;
6676
6743
  });
6677
6744
  this._exportCompleted = this._executeExport(exporter, logRecords, exportTimeoutMillis);
6678
6745
  }
@@ -6694,14 +6761,14 @@ class ExportOperation {
6694
6761
  }
6695
6762
  }
6696
6763
  async _exportWithTimeout(exporter, logRecords, exportTimeoutMillis) {
6697
- return new Promise((resolve2, reject) => {
6764
+ return new Promise((resolve3, reject) => {
6698
6765
  const timer = setTimeout(() => {
6699
6766
  reject(new Error("Timeout"));
6700
6767
  }, exportTimeoutMillis);
6701
6768
  exporter.export(logRecords, (result) => {
6702
6769
  clearTimeout(timer);
6703
6770
  if (result.code === import_core7.ExportResultCode.SUCCESS) {
6704
- resolve2();
6771
+ resolve3();
6705
6772
  } else {
6706
6773
  reject(result.error ?? new Error("BatchLogRecordProcessor: log record export failed"));
6707
6774
  }
@@ -9291,14 +9358,14 @@ var init_client = __esm(() => {
9291
9358
  });
9292
9359
 
9293
9360
  // src/utils/model/modelCapabilities.ts
9294
- import { readFileSync as readFileSync3 } from "fs";
9361
+ import { readFileSync as readFileSync4 } from "fs";
9295
9362
  import { mkdir, writeFile } from "fs/promises";
9296
- import { join as join4 } from "path";
9363
+ import { join as join5 } from "path";
9297
9364
  function getCacheDir() {
9298
- return join4(getClaudeConfigHomeDir(), "cache");
9365
+ return join5(getClaudeConfigHomeDir(), "cache");
9299
9366
  }
9300
9367
  function getCachePath() {
9301
- return join4(getCacheDir(), "model-capabilities.json");
9368
+ return join5(getCacheDir(), "model-capabilities.json");
9302
9369
  }
9303
9370
  function isModelCapabilitiesEligible() {
9304
9371
  if (getAPIProvider() !== "firstParty")
@@ -9381,7 +9448,7 @@ var init_modelCapabilities = __esm(() => {
9381
9448
  }));
9382
9449
  loadCache = memoize_default((path) => {
9383
9450
  try {
9384
- const raw = readFileSync3(path, "utf-8");
9451
+ const raw = readFileSync4(path, "utf-8");
9385
9452
  const parsed = CacheFileSchema().safeParse(safeParseJSON(raw, false));
9386
9453
  return parsed.success ? parsed.data.models : null;
9387
9454
  } catch {
@@ -10275,7 +10342,7 @@ var init_metadata = __esm(() => {
10275
10342
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
10276
10343
  WHITESPACE_REGEX = /\s+/;
10277
10344
  getVersionBase = memoize_default(() => {
10278
- const match = "1.0.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
10345
+ const match = "1.0.4".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
10279
10346
  return match ? match[0] : undefined;
10280
10347
  });
10281
10348
  buildEnvContext = memoize_default(async () => {
@@ -10315,9 +10382,9 @@ var init_metadata = __esm(() => {
10315
10382
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
10316
10383
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
10317
10384
  isClaudeAiAuth: isClaudeAISubscriber(),
10318
- version: "1.0.2",
10385
+ version: "1.0.4",
10319
10386
  versionBase: getVersionBase(),
10320
- buildTime: "2026-05-21T04:34:14.136Z",
10387
+ buildTime: "2026-05-21T06:48:39.722Z",
10321
10388
  deploymentEnvironment: env.detectDeploymentEnvironment(),
10322
10389
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
10323
10390
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -10976,7 +11043,7 @@ function initialize1PEventLogging() {
10976
11043
  const platform = getPlatform();
10977
11044
  const attributes = {
10978
11045
  [import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
10979
- [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.0.2"
11046
+ [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.0.4"
10980
11047
  };
10981
11048
  if (platform === "wsl") {
10982
11049
  const wslVersion = getWslVersion();
@@ -11003,7 +11070,7 @@ function initialize1PEventLogging() {
11003
11070
  })
11004
11071
  ]
11005
11072
  });
11006
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "1.0.2");
11073
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "1.0.4");
11007
11074
  }
11008
11075
  async function reinitialize1PEventLoggingIfConfigChanged() {
11009
11076
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -11762,13 +11829,13 @@ import { realpath, stat as stat2 } from "fs/promises";
11762
11829
  import { homedir as homedir2 } from "os";
11763
11830
  import {
11764
11831
  basename as basename2,
11765
- dirname as dirname3,
11832
+ dirname as dirname4,
11766
11833
  extname as extname2,
11767
11834
  isAbsolute as isAbsolute2,
11768
- join as join6,
11835
+ join as join7,
11769
11836
  normalize as normalize2,
11770
11837
  relative,
11771
- resolve as resolve2,
11838
+ resolve as resolve3,
11772
11839
  sep as sep2
11773
11840
  } from "path";
11774
11841
  async function pathExists(path2) {
@@ -11859,10 +11926,10 @@ function getDisplayPath(filePath) {
11859
11926
  function findSimilarFile(filePath) {
11860
11927
  const fs = getFsImplementation();
11861
11928
  try {
11862
- const dir = dirname3(filePath);
11929
+ const dir = dirname4(filePath);
11863
11930
  const fileBaseName = basename2(filePath, extname2(filePath));
11864
11931
  const files = fs.readdirSync(dir);
11865
- const similarFiles = files.filter((file) => basename2(file.name, extname2(file.name)) === fileBaseName && join6(dir, file.name) !== filePath);
11932
+ const similarFiles = files.filter((file) => basename2(file.name, extname2(file.name)) === fileBaseName && join7(dir, file.name) !== filePath);
11866
11933
  const firstMatch = similarFiles[0];
11867
11934
  if (firstMatch) {
11868
11935
  return firstMatch.name;
@@ -11877,18 +11944,18 @@ function findSimilarFile(filePath) {
11877
11944
  }
11878
11945
  async function suggestPathUnderCwd(requestedPath) {
11879
11946
  const cwd = getCwd();
11880
- const cwdParent = dirname3(cwd);
11947
+ const cwdParent = dirname4(cwd);
11881
11948
  let resolvedPath = requestedPath;
11882
11949
  try {
11883
- const resolvedDir = await realpath(dirname3(requestedPath));
11884
- resolvedPath = join6(resolvedDir, basename2(requestedPath));
11950
+ const resolvedDir = await realpath(dirname4(requestedPath));
11951
+ resolvedPath = join7(resolvedDir, basename2(requestedPath));
11885
11952
  } catch {}
11886
11953
  const cwdParentPrefix = cwdParent === sep2 ? sep2 : cwdParent + sep2;
11887
11954
  if (!resolvedPath.startsWith(cwdParentPrefix) || resolvedPath.startsWith(cwd + sep2) || resolvedPath === cwd) {
11888
11955
  return;
11889
11956
  }
11890
11957
  const relFromParent = relative(cwdParent, resolvedPath);
11891
- const correctedPath = join6(cwd, relFromParent);
11958
+ const correctedPath = join7(cwd, relFromParent);
11892
11959
  try {
11893
11960
  await stat2(correctedPath);
11894
11961
  return correctedPath;
@@ -11940,7 +12007,7 @@ function writeFileSyncAndFlush_DEPRECATED(filePath, content, options = { encodin
11940
12007
  let targetPath = filePath;
11941
12008
  try {
11942
12009
  const linkTarget = fs.readlinkSync(filePath);
11943
- targetPath = isAbsolute2(linkTarget) ? linkTarget : resolve2(dirname3(filePath), linkTarget);
12010
+ targetPath = isAbsolute2(linkTarget) ? linkTarget : resolve3(dirname4(filePath), linkTarget);
11944
12011
  logForDebugging(`Writing through symlink: ${filePath} -> ${targetPath}`);
11945
12012
  } catch {}
11946
12013
  const tempPath = `${targetPath}.tmp.${process.pid}.${Date.now()}`;
@@ -12008,7 +12075,7 @@ function getDesktopPath() {
12008
12075
  const platform = getPlatform();
12009
12076
  const homeDir = homedir2();
12010
12077
  if (platform === "macos") {
12011
- return join6(homeDir, "Desktop");
12078
+ return join7(homeDir, "Desktop");
12012
12079
  }
12013
12080
  if (platform === "windows") {
12014
12081
  const windowsHome = process.env.USERPROFILE ? process.env.USERPROFILE.replace(/\\/g, "/") : null;
@@ -12026,7 +12093,7 @@ function getDesktopPath() {
12026
12093
  if (user.name === "Public" || user.name === "Default" || user.name === "Default User" || user.name === "All Users") {
12027
12094
  continue;
12028
12095
  }
12029
- const potentialDesktopPath = join6(usersDir, user.name, "Desktop");
12096
+ const potentialDesktopPath = join7(usersDir, user.name, "Desktop");
12030
12097
  if (getFsImplementation().existsSync(potentialDesktopPath)) {
12031
12098
  return potentialDesktopPath;
12032
12099
  }
@@ -12035,7 +12102,7 @@ function getDesktopPath() {
12035
12102
  logError(error);
12036
12103
  }
12037
12104
  }
12038
- const desktopPath = join6(homeDir, "Desktop");
12105
+ const desktopPath = join7(homeDir, "Desktop");
12039
12106
  if (getFsImplementation().existsSync(desktopPath)) {
12040
12107
  return desktopPath;
12041
12108
  }
@@ -12079,7 +12146,7 @@ var init_file = __esm(() => {
12079
12146
  // src/utils/git/gitignore.ts
12080
12147
  import { appendFile as appendFile2, mkdir as mkdir3, readFile, writeFile as writeFile3 } from "fs/promises";
12081
12148
  import { homedir as homedir3 } from "os";
12082
- import { dirname as dirname4, join as join7 } from "path";
12149
+ import { dirname as dirname5, join as join8 } from "path";
12083
12150
  async function isPathGitignored(filePath, cwd) {
12084
12151
  const { code } = await execFileNoThrowWithCwd("git", ["check-ignore", filePath], {
12085
12152
  preserveOutputOnError: false,
@@ -12088,7 +12155,7 @@ async function isPathGitignored(filePath, cwd) {
12088
12155
  return code === 0;
12089
12156
  }
12090
12157
  function getGlobalGitignorePath() {
12091
- return join7(homedir3(), ".config", "git", "ignore");
12158
+ return join8(homedir3(), ".config", "git", "ignore");
12092
12159
  }
12093
12160
  async function addFileGlobRuleToGitignore(filename, cwd = getCwd()) {
12094
12161
  try {
@@ -12101,7 +12168,7 @@ async function addFileGlobRuleToGitignore(filename, cwd = getCwd()) {
12101
12168
  return;
12102
12169
  }
12103
12170
  const globalGitignorePath = getGlobalGitignorePath();
12104
- const configGitDir = dirname4(globalGitignorePath);
12171
+ const configGitDir = dirname5(globalGitignorePath);
12105
12172
  await mkdir3(configGitDir, { recursive: true });
12106
12173
  try {
12107
12174
  const content = await readFile(globalGitignorePath, { encoding: "utf-8" });
@@ -13757,7 +13824,7 @@ var init_validation2 = __esm(() => {
13757
13824
 
13758
13825
  // src/utils/settings/mdm/constants.ts
13759
13826
  import { homedir as homedir4, userInfo } from "os";
13760
- import { join as join8 } from "path";
13827
+ import { join as join9 } from "path";
13761
13828
  function getMacOSPlistPaths() {
13762
13829
  let username = "";
13763
13830
  try {
@@ -13776,7 +13843,7 @@ function getMacOSPlistPaths() {
13776
13843
  });
13777
13844
  if (process.env.USER_TYPE === "ant") {
13778
13845
  paths.push({
13779
- path: join8(homedir4(), "Library", "Preferences", `${MACOS_PREFERENCE_DOMAIN}.plist`),
13846
+ path: join9(homedir4(), "Library", "Preferences", `${MACOS_PREFERENCE_DOMAIN}.plist`),
13780
13847
  label: "user preferences (ant-only)"
13781
13848
  });
13782
13849
  }
@@ -13789,11 +13856,11 @@ var init_constants4 = __esm(() => {
13789
13856
 
13790
13857
  // src/utils/settings/mdm/rawRead.ts
13791
13858
  import { execFile } from "child_process";
13792
- import { existsSync as existsSync2 } from "fs";
13859
+ import { existsSync as existsSync3 } from "fs";
13793
13860
  function execFilePromise(cmd, args) {
13794
- return new Promise((resolve3) => {
13861
+ return new Promise((resolve4) => {
13795
13862
  execFile(cmd, args, { encoding: "utf-8", timeout: MDM_SUBPROCESS_TIMEOUT_MS }, (err, stdout) => {
13796
- resolve3({ stdout: stdout ?? "", code: err ? 1 : 0 });
13863
+ resolve4({ stdout: stdout ?? "", code: err ? 1 : 0 });
13797
13864
  });
13798
13865
  });
13799
13866
  }
@@ -13802,7 +13869,7 @@ function fireRawRead() {
13802
13869
  if (process.platform === "darwin") {
13803
13870
  const plistPaths = getMacOSPlistPaths();
13804
13871
  const allResults = await Promise.all(plistPaths.map(async ({ path: path2, label }) => {
13805
- if (!existsSync2(path2)) {
13872
+ if (!existsSync3(path2)) {
13806
13873
  return { stdout: "", label, ok: false };
13807
13874
  }
13808
13875
  const { stdout, code } = await execFilePromise(PLUTIL_PATH, [
@@ -13856,7 +13923,7 @@ var init_rawRead = __esm(() => {
13856
13923
  });
13857
13924
 
13858
13925
  // src/utils/settings/mdm/settings.ts
13859
- import { join as join9 } from "path";
13926
+ import { join as join10 } from "path";
13860
13927
  function startMdmSettingsLoad() {
13861
13928
  if (mdmLoadPromise)
13862
13929
  return;
@@ -13958,7 +14025,7 @@ function consumeRawReadResult(raw) {
13958
14025
  }
13959
14026
  function hasManagedSettingsFile() {
13960
14027
  try {
13961
- const filePath = join9(getManagedFilePath(), "managed-settings.json");
14028
+ const filePath = join10(getManagedFilePath(), "managed-settings.json");
13962
14029
  const content = readFileSync(filePath);
13963
14030
  const data = safeParseJSON(content, false);
13964
14031
  if (data && typeof data === "object" && Object.keys(data).length > 0) {
@@ -13973,7 +14040,7 @@ function hasManagedSettingsFile() {
13973
14040
  continue;
13974
14041
  }
13975
14042
  try {
13976
- const content = readFileSync(join9(dropInDir, d.name));
14043
+ const content = readFileSync(join10(dropInDir, d.name));
13977
14044
  const data = safeParseJSON(content, false);
13978
14045
  if (data && typeof data === "object" && Object.keys(data).length > 0) {
13979
14046
  return true;
@@ -14000,9 +14067,9 @@ var init_settings = __esm(() => {
14000
14067
  });
14001
14068
 
14002
14069
  // src/utils/settings/settings.ts
14003
- import { dirname as dirname5, join as join10, resolve as resolve3 } from "path";
14070
+ import { dirname as dirname6, join as join11, resolve as resolve4 } from "path";
14004
14071
  function getManagedSettingsFilePath() {
14005
- return join10(getManagedFilePath(), "managed-settings.json");
14072
+ return join11(getManagedFilePath(), "managed-settings.json");
14006
14073
  }
14007
14074
  function loadManagedFileSettings() {
14008
14075
  const errors = [];
@@ -14018,7 +14085,7 @@ function loadManagedFileSettings() {
14018
14085
  try {
14019
14086
  const entries = getFsImplementation().readdirSync(dropInDir).filter((d) => (d.isFile() || d.isSymbolicLink()) && d.name.endsWith(".json") && !d.name.startsWith(".")).map((d) => d.name).sort();
14020
14087
  for (const name of entries) {
14021
- const { settings: settings2, errors: fileErrors } = parseSettingsFile(join10(dropInDir, name));
14088
+ const { settings: settings2, errors: fileErrors } = parseSettingsFile(join11(dropInDir, name));
14022
14089
  errors.push(...fileErrors);
14023
14090
  if (settings2 && Object.keys(settings2).length > 0) {
14024
14091
  merged = mergeWith_default(merged, settings2, settingsMergeCustomizer);
@@ -14088,15 +14155,15 @@ function parseSettingsFileUncached(path2) {
14088
14155
  function getSettingsRootPathForSource(source) {
14089
14156
  switch (source) {
14090
14157
  case "userSettings":
14091
- return resolve3(getRedScopeConfigHomeDir());
14158
+ return resolve4(getRedScopeConfigHomeDir());
14092
14159
  case "policySettings":
14093
14160
  case "projectSettings":
14094
14161
  case "localSettings": {
14095
- return resolve3(getOriginalCwd());
14162
+ return resolve4(getOriginalCwd());
14096
14163
  }
14097
14164
  case "flagSettings": {
14098
14165
  const path2 = getFlagSettingsPath();
14099
- return path2 ? dirname5(resolve3(path2)) : resolve3(getOriginalCwd());
14166
+ return path2 ? dirname6(resolve4(path2)) : resolve4(getOriginalCwd());
14100
14167
  }
14101
14168
  }
14102
14169
  }
@@ -14109,10 +14176,10 @@ function getUserSettingsFilePath() {
14109
14176
  function getSettingsFilePathForSource(source) {
14110
14177
  switch (source) {
14111
14178
  case "userSettings":
14112
- return join10(getSettingsRootPathForSource(source), getUserSettingsFilePath());
14179
+ return join11(getSettingsRootPathForSource(source), getUserSettingsFilePath());
14113
14180
  case "projectSettings":
14114
14181
  case "localSettings": {
14115
- return join10(getSettingsRootPathForSource(source), getRelativeSettingsFilePathForSource(source));
14182
+ return join11(getSettingsRootPathForSource(source), getRelativeSettingsFilePathForSource(source));
14116
14183
  }
14117
14184
  case "policySettings":
14118
14185
  return getManagedSettingsFilePath();
@@ -14124,12 +14191,12 @@ function getSettingsFilePathForSource(source) {
14124
14191
  function getSettingsFilePathsForSource(source) {
14125
14192
  switch (source) {
14126
14193
  case "userSettings": {
14127
- const redscopePath = join10(getRedScopeConfigHomeDir(), getUserSettingsFilePath());
14194
+ const redscopePath = join11(getRedScopeConfigHomeDir(), getUserSettingsFilePath());
14128
14195
  if (!isLegacyClaudeSettingsCompatibilityEnabled()) {
14129
14196
  return [redscopePath];
14130
14197
  }
14131
14198
  return uniquePaths([
14132
- join10(getLegacyClaudeConfigHomeDir(), getUserSettingsFilePath()),
14199
+ join11(getLegacyClaudeConfigHomeDir(), getUserSettingsFilePath()),
14133
14200
  redscopePath
14134
14201
  ]);
14135
14202
  }
@@ -14137,12 +14204,12 @@ function getSettingsFilePathsForSource(source) {
14137
14204
  case "localSettings": {
14138
14205
  const filename = source === "projectSettings" ? "settings.json" : "settings.local.json";
14139
14206
  const root = getSettingsRootPathForSource(source);
14140
- const redscopePath = join10(root, REDSCOPE_CONFIG_DIR, filename);
14207
+ const redscopePath = join11(root, REDSCOPE_CONFIG_DIR, filename);
14141
14208
  if (!isLegacyClaudeSettingsCompatibilityEnabled()) {
14142
14209
  return [redscopePath];
14143
14210
  }
14144
14211
  return uniquePaths([
14145
- join10(root, CLAUDE_CONFIG_DIR, filename),
14212
+ join11(root, CLAUDE_CONFIG_DIR, filename),
14146
14213
  redscopePath
14147
14214
  ]);
14148
14215
  }
@@ -14173,9 +14240,9 @@ function readLegacyClaudeSettingsCompatibilityFlag(filePath) {
14173
14240
  function getRedScopeSettingsCompatibilityFiles() {
14174
14241
  const root = getSettingsRootPathForSource("projectSettings");
14175
14242
  return uniquePaths([
14176
- join10(getRedScopeConfigHomeDir(), getUserSettingsFilePath()),
14177
- join10(root, REDSCOPE_CONFIG_DIR, "settings.json"),
14178
- join10(root, REDSCOPE_CONFIG_DIR, "settings.local.json")
14243
+ join11(getRedScopeConfigHomeDir(), getUserSettingsFilePath()),
14244
+ join11(root, REDSCOPE_CONFIG_DIR, "settings.json"),
14245
+ join11(root, REDSCOPE_CONFIG_DIR, "settings.local.json")
14179
14246
  ]);
14180
14247
  }
14181
14248
  function isLegacyClaudeSettingsCompatibilityEnabled() {
@@ -14232,9 +14299,9 @@ function setLegacyClaudeSettingsCompatibility(enabled, scope = "user") {
14232
14299
  function getRelativeSettingsFilePathForSource(source) {
14233
14300
  switch (source) {
14234
14301
  case "projectSettings":
14235
- return join10(".redscope", "settings.json");
14302
+ return join11(".redscope", "settings.json");
14236
14303
  case "localSettings":
14237
- return join10(".redscope", "settings.local.json");
14304
+ return join11(".redscope", "settings.local.json");
14238
14305
  }
14239
14306
  }
14240
14307
  function getSettingsForSource(source) {
@@ -14319,7 +14386,7 @@ function updateSettingsForSource(source, settings) {
14319
14386
  return { error: null };
14320
14387
  }
14321
14388
  try {
14322
- getFsImplementation().mkdirSync(dirname5(filePath));
14389
+ getFsImplementation().mkdirSync(dirname6(filePath));
14323
14390
  let existingSettings = getSettingsForSourceUncached(source);
14324
14391
  if (!existingSettings) {
14325
14392
  let content = null;
@@ -14500,7 +14567,7 @@ function loadSettingsFromDisk() {
14500
14567
  continue;
14501
14568
  }
14502
14569
  for (const filePath of getSettingsFilePathsForSource(source)) {
14503
- const resolvedPath = resolve3(filePath);
14570
+ const resolvedPath = resolve4(filePath);
14504
14571
  if (!seenFiles.has(resolvedPath)) {
14505
14572
  seenFiles.add(resolvedPath);
14506
14573
  const { settings, errors } = parseSettingsFile(filePath);
@@ -15126,14 +15193,14 @@ var init_getOauthProfile = __esm(() => {
15126
15193
  });
15127
15194
 
15128
15195
  // src/utils/authFileDescriptor.ts
15129
- import { mkdirSync as mkdirSync2, writeFileSync as writeFileSync2 } from "fs";
15196
+ import { mkdirSync as mkdirSync3, writeFileSync as writeFileSync3 } from "fs";
15130
15197
  function maybePersistTokenForSubprocesses(path2, token, tokenName) {
15131
15198
  if (!isEnvTruthy(process.env.CLAUDE_CODE_REMOTE)) {
15132
15199
  return;
15133
15200
  }
15134
15201
  try {
15135
- mkdirSync2(CCR_TOKEN_DIR, { recursive: true, mode: 448 });
15136
- writeFileSync2(path2, token, { encoding: "utf8", mode: 384 });
15202
+ mkdirSync3(CCR_TOKEN_DIR, { recursive: true, mode: 448 });
15203
+ writeFileSync3(path2, token, { encoding: "utf8", mode: 384 });
15137
15204
  logForDebugging(`Persisted ${tokenName} to ${path2} for subprocess access`);
15138
15205
  } catch (error) {
15139
15206
  logForDebugging(`Failed to persist ${tokenName} to disk (non-fatal): ${errorMessage(error)}`, { level: "error" });
@@ -15579,11 +15646,11 @@ var init_macOsKeychainStorage = __esm(() => {
15579
15646
 
15580
15647
  // src/utils/secureStorage/plainTextStorage.ts
15581
15648
  import { chmodSync as chmodSync2 } from "fs";
15582
- import { join as join11 } from "path";
15649
+ import { join as join12 } from "path";
15583
15650
  function getStoragePath() {
15584
15651
  const storageDir = getClaudeConfigHomeDir();
15585
15652
  const storageFileName = ".credentials.json";
15586
- return { storageDir, storagePath: join11(storageDir, storageFileName) };
15653
+ return { storageDir, storagePath: join12(storageDir, storageFileName) };
15587
15654
  }
15588
15655
  var plainTextStorage;
15589
15656
  var init_plainTextStorage = __esm(() => {
@@ -15671,9 +15738,9 @@ var init_secureStorage = __esm(() => {
15671
15738
  // src/utils/secureStorage/keychainPrefetch.ts
15672
15739
  import { execFile as execFile2 } from "child_process";
15673
15740
  function spawnSecurity(serviceName) {
15674
- return new Promise((resolve4) => {
15741
+ return new Promise((resolve5) => {
15675
15742
  execFile2("security", ["find-generic-password", "-a", getUsername(), "-w", "-s", serviceName], { encoding: "utf-8", timeout: KEYCHAIN_PREFETCH_TIMEOUT_MS }, (err, stdout) => {
15676
- resolve4({
15743
+ resolve5({
15677
15744
  stdout: err ? null : stdout?.trim() || null,
15678
15745
  timedOut: Boolean(err && "killed" in err && err.killed)
15679
15746
  });
@@ -15780,7 +15847,7 @@ __export(exports_auth, {
15780
15847
  });
15781
15848
  import { exec } from "child_process";
15782
15849
  import { mkdir as mkdir4, stat as stat3 } from "fs/promises";
15783
- import { join as join12 } from "path";
15850
+ import { join as join13 } from "path";
15784
15851
  function isManagedOAuthContext() {
15785
15852
  return isEnvTruthy(process.env.CLAUDE_CODE_REMOTE) || process.env.CLAUDE_CODE_ENTRYPOINT === "claude-desktop";
15786
15853
  }
@@ -16105,7 +16172,7 @@ function refreshAwsAuth(awsAuthRefresh) {
16105
16172
  logForDebugging("Running AWS auth refresh command");
16106
16173
  const authStatusManager = AwsAuthStatusManager.getInstance();
16107
16174
  authStatusManager.startAuthentication();
16108
- return new Promise((resolve4) => {
16175
+ return new Promise((resolve5) => {
16109
16176
  const refreshProc = exec(awsAuthRefresh, {
16110
16177
  timeout: AWS_AUTH_REFRESH_TIMEOUT_MS
16111
16178
  });
@@ -16127,13 +16194,13 @@ function refreshAwsAuth(awsAuthRefresh) {
16127
16194
  if (code === 0) {
16128
16195
  logForDebugging("AWS auth refresh completed successfully");
16129
16196
  authStatusManager.endAuthentication(true);
16130
- resolve4(true);
16197
+ resolve5(true);
16131
16198
  } else {
16132
16199
  const timedOut = signal === "SIGTERM";
16133
16200
  const message = timedOut ? source_default.red("AWS auth refresh timed out after 3 minutes. Run your auth command manually in a separate terminal.") : source_default.red("Error running awsAuthRefresh (in settings or ~/.claude.json):");
16134
16201
  console.error(message);
16135
16202
  authStatusManager.endAuthentication(false);
16136
- resolve4(false);
16203
+ resolve5(false);
16137
16204
  }
16138
16205
  });
16139
16206
  });
@@ -16251,7 +16318,7 @@ function refreshGcpAuth(gcpAuthRefresh) {
16251
16318
  logForDebugging("Running GCP auth refresh command");
16252
16319
  const authStatusManager = AwsAuthStatusManager.getInstance();
16253
16320
  authStatusManager.startAuthentication();
16254
- return new Promise((resolve4) => {
16321
+ return new Promise((resolve5) => {
16255
16322
  const refreshProc = exec(gcpAuthRefresh, {
16256
16323
  timeout: GCP_AUTH_REFRESH_TIMEOUT_MS
16257
16324
  });
@@ -16273,13 +16340,13 @@ function refreshGcpAuth(gcpAuthRefresh) {
16273
16340
  if (code === 0) {
16274
16341
  logForDebugging("GCP auth refresh completed successfully");
16275
16342
  authStatusManager.endAuthentication(true);
16276
- resolve4(true);
16343
+ resolve5(true);
16277
16344
  } else {
16278
16345
  const timedOut = signal === "SIGTERM";
16279
16346
  const message = timedOut ? source_default.red("GCP auth refresh timed out after 3 minutes. Run your auth command manually in a separate terminal.") : source_default.red("Error running gcpAuthRefresh (in settings or ~/.claude.json):");
16280
16347
  console.error(message);
16281
16348
  authStatusManager.endAuthentication(false);
16282
- resolve4(false);
16349
+ resolve5(false);
16283
16350
  }
16284
16351
  });
16285
16352
  });
@@ -16431,7 +16498,7 @@ function clearOAuthTokenCache() {
16431
16498
  }
16432
16499
  async function invalidateOAuthCacheIfDiskChanged() {
16433
16500
  try {
16434
- const { mtimeMs } = await stat3(join12(getClaudeConfigHomeDir(), ".credentials.json"));
16501
+ const { mtimeMs } = await stat3(join13(getClaudeConfigHomeDir(), ".credentials.json"));
16435
16502
  if (mtimeMs !== lastCredentialsMtimeMs) {
16436
16503
  lastCredentialsMtimeMs = mtimeMs;
16437
16504
  clearOAuthTokenCache();