@jayjiang/open-cc 0.2.1

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 (459) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +107 -0
  3. package/dist/chunk-00dxqxqj.js +227 -0
  4. package/dist/chunk-01p8hhsp.js +154 -0
  5. package/dist/chunk-02wy0m47.js +152 -0
  6. package/dist/chunk-0465tnzh.js +110 -0
  7. package/dist/chunk-054mjk62.js +678 -0
  8. package/dist/chunk-06saje2v.js +39 -0
  9. package/dist/chunk-0731m51q.js +8 -0
  10. package/dist/chunk-09y0jvtm.js +165 -0
  11. package/dist/chunk-0fkqze0v.js +113 -0
  12. package/dist/chunk-0hn525br.js +1920 -0
  13. package/dist/chunk-0hneh9ha.js +123 -0
  14. package/dist/chunk-0paqc2yw.js +15 -0
  15. package/dist/chunk-0rkbrabt.js +32 -0
  16. package/dist/chunk-0scs4rpx.js +96 -0
  17. package/dist/chunk-0vkfrmqm.js +690 -0
  18. package/dist/chunk-0w2byc95.js +38 -0
  19. package/dist/chunk-0xjaqda8.js +1124 -0
  20. package/dist/chunk-0y3vcsv4.js +92 -0
  21. package/dist/chunk-0yb4dz9c.js +26840 -0
  22. package/dist/chunk-10fdxge0.js +121 -0
  23. package/dist/chunk-1141xmr4.js +8 -0
  24. package/dist/chunk-14vffdmg.js +38 -0
  25. package/dist/chunk-178ykx7k.js +1493 -0
  26. package/dist/chunk-1bhva2z9.js +128 -0
  27. package/dist/chunk-1c8z1b5v.js +16 -0
  28. package/dist/chunk-1cbn5kxf.js +7 -0
  29. package/dist/chunk-1che51a5.js +1585 -0
  30. package/dist/chunk-1h2famwb.js +49 -0
  31. package/dist/chunk-1jrkpnbn.js +71 -0
  32. package/dist/chunk-1k4j1xcf.js +154 -0
  33. package/dist/chunk-1mm9d8p4.js +70 -0
  34. package/dist/chunk-1n3gnn2t.js +41 -0
  35. package/dist/chunk-1nqaq1rs.js +654 -0
  36. package/dist/chunk-1p2j9g3w.js +998 -0
  37. package/dist/chunk-1p7jfcee.js +533 -0
  38. package/dist/chunk-1pg8s12r.js +338 -0
  39. package/dist/chunk-1qjb22fx.js +109 -0
  40. package/dist/chunk-1yzc16qa.js +39 -0
  41. package/dist/chunk-20gm89wf.js +208 -0
  42. package/dist/chunk-238g70xa.js +36 -0
  43. package/dist/chunk-26k0324b.js +751 -0
  44. package/dist/chunk-27xc1csx.js +104 -0
  45. package/dist/chunk-2a42s11t.js +412 -0
  46. package/dist/chunk-2bhq4emw.js +10476 -0
  47. package/dist/chunk-2eykm0j0.js +20 -0
  48. package/dist/chunk-2gzv8nrw.js +205 -0
  49. package/dist/chunk-2k995y2x.js +880 -0
  50. package/dist/chunk-2kpzaa7w.js +401 -0
  51. package/dist/chunk-2nayx6q1.js +63 -0
  52. package/dist/chunk-2qhs9n36.js +151 -0
  53. package/dist/chunk-2s5f2nnw.js +603 -0
  54. package/dist/chunk-2y54j9ew.js +174394 -0
  55. package/dist/chunk-2zcaw1jd.js +2343 -0
  56. package/dist/chunk-30chpfyc.js +15275 -0
  57. package/dist/chunk-30k39xd2.js +28 -0
  58. package/dist/chunk-30rst83v.js +168 -0
  59. package/dist/chunk-36z5enc4.js +160 -0
  60. package/dist/chunk-3c25bcsw.js +17 -0
  61. package/dist/chunk-3c4qja3e.js +63 -0
  62. package/dist/chunk-3ccx8k84.js +102 -0
  63. package/dist/chunk-3envnthj.js +157 -0
  64. package/dist/chunk-3h8a89gy.js +46 -0
  65. package/dist/chunk-3kadbep2.js +6956 -0
  66. package/dist/chunk-3kd79cnk.js +15 -0
  67. package/dist/chunk-3m45xtza.js +1188 -0
  68. package/dist/chunk-3q50xe1j.js +17 -0
  69. package/dist/chunk-3w6s9m5w.js +16 -0
  70. package/dist/chunk-3x0408tc.js +42 -0
  71. package/dist/chunk-3z7ae04g.js +372 -0
  72. package/dist/chunk-40tedt0y.js +275 -0
  73. package/dist/chunk-44q8kegv.js +811 -0
  74. package/dist/chunk-47gy6qkp.js +328 -0
  75. package/dist/chunk-495d85x1.js +8066 -0
  76. package/dist/chunk-4axcksrv.js +129 -0
  77. package/dist/chunk-4e1271a8.js +106 -0
  78. package/dist/chunk-4g3v8y12.js +23 -0
  79. package/dist/chunk-4g5mrzm0.js +220 -0
  80. package/dist/chunk-4jm600zv.js +13 -0
  81. package/dist/chunk-4n989n6h.js +153 -0
  82. package/dist/chunk-4qedx22a.js +44 -0
  83. package/dist/chunk-4rze71rx.js +116 -0
  84. package/dist/chunk-4wbhvcag.js +91 -0
  85. package/dist/chunk-4zfkzkt6.js +37 -0
  86. package/dist/chunk-55wgxwa9.js +13877 -0
  87. package/dist/chunk-56ta4h0b.js +154 -0
  88. package/dist/chunk-58a0x39g.js +89 -0
  89. package/dist/chunk-5dbk24zg.js +890 -0
  90. package/dist/chunk-5gzg4q1k.js +99 -0
  91. package/dist/chunk-5k2gdxnr.js +336 -0
  92. package/dist/chunk-5kp252z6.js +202 -0
  93. package/dist/chunk-5p2ssw3d.js +825 -0
  94. package/dist/chunk-5w33j8gy.js +1580 -0
  95. package/dist/chunk-5ywjzvm8.js +61 -0
  96. package/dist/chunk-5ztxx8gd.js +80 -0
  97. package/dist/chunk-62vwr0y5.js +117 -0
  98. package/dist/chunk-6b8ksqmf.js +1153 -0
  99. package/dist/chunk-6bd8brc4.js +48 -0
  100. package/dist/chunk-6cpqmd4r.js +132 -0
  101. package/dist/chunk-6dj5t602.js +341 -0
  102. package/dist/chunk-6g62sjpf.js +328 -0
  103. package/dist/chunk-6gr3c3w9.js +378 -0
  104. package/dist/chunk-6h9n8qbr.js +1170 -0
  105. package/dist/chunk-6kpbgc5w.js +23 -0
  106. package/dist/chunk-6n2qgm9v.js +8 -0
  107. package/dist/chunk-6n6jfmce.js +2833 -0
  108. package/dist/chunk-6q2x8zeg.js +802 -0
  109. package/dist/chunk-6tnekwtp.js +849 -0
  110. package/dist/chunk-6tq2v3rk.js +186 -0
  111. package/dist/chunk-6vphqqd1.js +27 -0
  112. package/dist/chunk-6wkdqk81.js +444 -0
  113. package/dist/chunk-7226mgjt.js +195 -0
  114. package/dist/chunk-72fey14y.js +565 -0
  115. package/dist/chunk-73fgm72g.js +698 -0
  116. package/dist/chunk-73fhat5j.js +212 -0
  117. package/dist/chunk-73rpbt04.js +1947 -0
  118. package/dist/chunk-743znc5c.js +56 -0
  119. package/dist/chunk-760252na.js +101 -0
  120. package/dist/chunk-76t2h5v2.js +495 -0
  121. package/dist/chunk-7739pg2c.js +4261 -0
  122. package/dist/chunk-789khc7a.js +96 -0
  123. package/dist/chunk-78mma1s7.js +88 -0
  124. package/dist/chunk-7aw745vx.js +40175 -0
  125. package/dist/chunk-7azp8c8y.js +584 -0
  126. package/dist/chunk-7m2nd8da.js +110 -0
  127. package/dist/chunk-7pemewz2.js +726 -0
  128. package/dist/chunk-7rjyn5d3.js +125 -0
  129. package/dist/chunk-7v0wq9nk.js +93 -0
  130. package/dist/chunk-7wm5s02e.js +216 -0
  131. package/dist/chunk-83hfzbx3.js +10 -0
  132. package/dist/chunk-84k64e4a.js +1646 -0
  133. package/dist/chunk-87jfpcm7.js +438 -0
  134. package/dist/chunk-8btm871b.js +42 -0
  135. package/dist/chunk-8hbbzet5.js +34 -0
  136. package/dist/chunk-8hq5kk3y.js +44 -0
  137. package/dist/chunk-8j6vs75t.js +256 -0
  138. package/dist/chunk-8ngxagxq.js +18 -0
  139. package/dist/chunk-8nsem424.js +110 -0
  140. package/dist/chunk-8pf73pc8.js +169 -0
  141. package/dist/chunk-8tnsngw2.js +31 -0
  142. package/dist/chunk-8y12jxg8.js +10 -0
  143. package/dist/chunk-8ymf4e6z.js +48 -0
  144. package/dist/chunk-90wp6wez.js +10510 -0
  145. package/dist/chunk-95dt8mpg.js +603 -0
  146. package/dist/chunk-95rj8m4e.js +130 -0
  147. package/dist/chunk-9ebygqen.js +89 -0
  148. package/dist/chunk-9gbamk79.js +93 -0
  149. package/dist/chunk-9tkq3g56.js +642 -0
  150. package/dist/chunk-a05hje2h.js +105 -0
  151. package/dist/chunk-a2krhf3c.js +90 -0
  152. package/dist/chunk-a6q9rehn.js +182 -0
  153. package/dist/chunk-a78b3pvt.js +71 -0
  154. package/dist/chunk-a8ejc632.js +3094 -0
  155. package/dist/chunk-a9vdeb6y.js +258 -0
  156. package/dist/chunk-a9zh40sj.js +48 -0
  157. package/dist/chunk-ab59azrr.js +480 -0
  158. package/dist/chunk-accxhkm6.js +88 -0
  159. package/dist/chunk-adzd8pzb.js +1095 -0
  160. package/dist/chunk-ae76ded0.js +30 -0
  161. package/dist/chunk-aftppv3p.js +691 -0
  162. package/dist/chunk-agmw1vmf.js +725 -0
  163. package/dist/chunk-an5cb1vx.js +16 -0
  164. package/dist/chunk-b1s11z4y.js +63 -0
  165. package/dist/chunk-b2rkh01x.js +443 -0
  166. package/dist/chunk-b4w4argn.js +1551 -0
  167. package/dist/chunk-b4wg70y1.js +54 -0
  168. package/dist/chunk-b5b7h81y.js +7189 -0
  169. package/dist/chunk-b9k5cs09.js +50 -0
  170. package/dist/chunk-bapy5rc8.js +40 -0
  171. package/dist/chunk-bda3gxxz.js +246 -0
  172. package/dist/chunk-bhdt6k7w.js +15 -0
  173. package/dist/chunk-bm1qb16p.js +17 -0
  174. package/dist/chunk-bp0dnrwg.js +281 -0
  175. package/dist/chunk-bqfnp99q.js +477 -0
  176. package/dist/chunk-bs6keys0.js +158 -0
  177. package/dist/chunk-bsbmmfyt.js +17 -0
  178. package/dist/chunk-btkettbr.js +166 -0
  179. package/dist/chunk-bwgde7nf.js +37 -0
  180. package/dist/chunk-c1zc58pw.js +280 -0
  181. package/dist/chunk-c2g96ga2.js +184 -0
  182. package/dist/chunk-c3z7ptb2.js +21933 -0
  183. package/dist/chunk-c8vn3ynx.js +349 -0
  184. package/dist/chunk-cdm0k2n0.js +115 -0
  185. package/dist/chunk-cdz5yb0r.js +57 -0
  186. package/dist/chunk-cfv996bs.js +22 -0
  187. package/dist/chunk-cg788ab0.js +100 -0
  188. package/dist/chunk-cgfdkzhb.js +12 -0
  189. package/dist/chunk-cp76dsdp.js +386 -0
  190. package/dist/chunk-cr6t6rth.js +306 -0
  191. package/dist/chunk-cvp5vayb.js +31 -0
  192. package/dist/chunk-cwehsmj5.js +114 -0
  193. package/dist/chunk-cy2hswr1.js +15 -0
  194. package/dist/chunk-d2rzy2p0.js +42 -0
  195. package/dist/chunk-d3v2fbay.js +106 -0
  196. package/dist/chunk-dc4eha8a.js +243 -0
  197. package/dist/chunk-dcz167d6.js +73 -0
  198. package/dist/chunk-de55jjre.js +106 -0
  199. package/dist/chunk-dfx733j3.js +650 -0
  200. package/dist/chunk-dgqrcy74.js +48 -0
  201. package/dist/chunk-dj6dk19k.js +55 -0
  202. package/dist/chunk-dn2xcmc4.js +173 -0
  203. package/dist/chunk-dndehvfr.js +57 -0
  204. package/dist/chunk-dnh7jtpb.js +37 -0
  205. package/dist/chunk-dnwzz9f7.js +88 -0
  206. package/dist/chunk-dv1wfr85.js +6373 -0
  207. package/dist/chunk-dwq5rs3q.js +62 -0
  208. package/dist/chunk-dz8exe78.js +91 -0
  209. package/dist/chunk-e4rzw1sd.js +606 -0
  210. package/dist/chunk-e6rrwzv0.js +463 -0
  211. package/dist/chunk-e6t9kpzq.js +145 -0
  212. package/dist/chunk-e7c8ypwc.js +287 -0
  213. package/dist/chunk-e9nkfs4e.js +738 -0
  214. package/dist/chunk-eaf7c8ck.js +537 -0
  215. package/dist/chunk-ebyr6p77.js +115 -0
  216. package/dist/chunk-edfv7pme.js +104 -0
  217. package/dist/chunk-eh474zhj.js +59 -0
  218. package/dist/chunk-er8ckwzt.js +140 -0
  219. package/dist/chunk-ev5p07yh.js +144 -0
  220. package/dist/chunk-ewadzrm8.js +103 -0
  221. package/dist/chunk-f2mhrmww.js +62 -0
  222. package/dist/chunk-f2zhqnb6.js +69 -0
  223. package/dist/chunk-f5ma3nh5.js +3436 -0
  224. package/dist/chunk-f63q7vx7.js +756 -0
  225. package/dist/chunk-fbv4apne.js +51 -0
  226. package/dist/chunk-fcna95wg.js +113 -0
  227. package/dist/chunk-fdvcpaz3.js +163 -0
  228. package/dist/chunk-fgc0q2b2.js +3354 -0
  229. package/dist/chunk-fm2jvsk7.js +87 -0
  230. package/dist/chunk-ft7fs35e.js +282 -0
  231. package/dist/chunk-fyc5fepv.js +10 -0
  232. package/dist/chunk-g0j0t6qk.js +26 -0
  233. package/dist/chunk-g0nbec9m.js +32 -0
  234. package/dist/chunk-g1fdv1kb.js +86 -0
  235. package/dist/chunk-g338npwr.js +1061 -0
  236. package/dist/chunk-g3t0act8.js +8 -0
  237. package/dist/chunk-g6qddbvf.js +1391 -0
  238. package/dist/chunk-ga5faygf.js +61 -0
  239. package/dist/chunk-gac6nzhc.js +90 -0
  240. package/dist/chunk-gck2cswd.js +862 -0
  241. package/dist/chunk-gntr3b25.js +40683 -0
  242. package/dist/chunk-gq5bbtme.js +456 -0
  243. package/dist/chunk-gyj242zr.js +20 -0
  244. package/dist/chunk-h0qngp9w.js +157 -0
  245. package/dist/chunk-h1xnvnye.js +524 -0
  246. package/dist/chunk-h3mhfamg.js +60 -0
  247. package/dist/chunk-h6s1tx0e.js +250 -0
  248. package/dist/chunk-h7qb4hyj.js +70 -0
  249. package/dist/chunk-h8qd1gw2.js +106 -0
  250. package/dist/chunk-hakdhagh.js +16606 -0
  251. package/dist/chunk-hcdt34n4.js +143 -0
  252. package/dist/chunk-hh7cmy4k.js +20 -0
  253. package/dist/chunk-hk9xz7gk.js +118 -0
  254. package/dist/chunk-hqmz36b3.js +552 -0
  255. package/dist/chunk-hs8ph4p8.js +8 -0
  256. package/dist/chunk-hsq4vtjy.js +92 -0
  257. package/dist/chunk-hzhd0p1y.js +104 -0
  258. package/dist/chunk-hzhe8ygc.js +547 -0
  259. package/dist/chunk-j0tqbsh7.js +176 -0
  260. package/dist/chunk-j1s1jvad.js +346 -0
  261. package/dist/chunk-j2k4p94p.js +55 -0
  262. package/dist/chunk-j3a4p81y.js +184 -0
  263. package/dist/chunk-j595yd4h.js +439 -0
  264. package/dist/chunk-j64ga6ta.js +8035 -0
  265. package/dist/chunk-j7qwxra8.js +2335 -0
  266. package/dist/chunk-j98f65zv.js +789 -0
  267. package/dist/chunk-jd32zbps.js +15 -0
  268. package/dist/chunk-jdgeec04.js +4249 -0
  269. package/dist/chunk-jdt5s5k7.js +62 -0
  270. package/dist/chunk-jeaek018.js +97 -0
  271. package/dist/chunk-jkhvm8yk.js +104 -0
  272. package/dist/chunk-jmxaze30.js +780 -0
  273. package/dist/chunk-jne71s1f.js +104 -0
  274. package/dist/chunk-jnhkref0.js +30 -0
  275. package/dist/chunk-jpgr7zfs.js +95 -0
  276. package/dist/chunk-jqp0q5nk.js +339 -0
  277. package/dist/chunk-jtqgnyaq.js +1317 -0
  278. package/dist/chunk-jx817w05.js +11 -0
  279. package/dist/chunk-jynzr5w9.js +71 -0
  280. package/dist/chunk-jzmz18nn.js +65 -0
  281. package/dist/chunk-k0p9w03v.js +4957 -0
  282. package/dist/chunk-k1jnpyj9.js +155 -0
  283. package/dist/chunk-k445en8h.js +102 -0
  284. package/dist/chunk-k62k13ya.js +81 -0
  285. package/dist/chunk-kf8kjmfv.js +821 -0
  286. package/dist/chunk-kgn1nfg9.js +468 -0
  287. package/dist/chunk-khmz14d4.js +38 -0
  288. package/dist/chunk-kjhmt6ba.js +100 -0
  289. package/dist/chunk-kkrz2zw2.js +122 -0
  290. package/dist/chunk-kv1ryvtm.js +176 -0
  291. package/dist/chunk-kwekc97v.js +18 -0
  292. package/dist/chunk-kyvwf342.js +65 -0
  293. package/dist/chunk-m0g3xv72.js +266 -0
  294. package/dist/chunk-m26twd8m.js +277 -0
  295. package/dist/chunk-m4bc15mz.js +229 -0
  296. package/dist/chunk-m9t8j37k.js +253 -0
  297. package/dist/chunk-mb2gpwwf.js +432 -0
  298. package/dist/chunk-mezwt1bt.js +306 -0
  299. package/dist/chunk-mfm83xn5.js +84 -0
  300. package/dist/chunk-mn7870fh.js +4389 -0
  301. package/dist/chunk-mr9df5v8.js +722 -0
  302. package/dist/chunk-mt25echc.js +6157 -0
  303. package/dist/chunk-mwrr6zbb.js +55 -0
  304. package/dist/chunk-mywpbwad.js +198 -0
  305. package/dist/chunk-mzdtkccs.js +125 -0
  306. package/dist/chunk-mzn0z9d3.js +691 -0
  307. package/dist/chunk-n0qaeaa5.js +256 -0
  308. package/dist/chunk-n128bzxs.js +2739 -0
  309. package/dist/chunk-n1erf6kh.js +22820 -0
  310. package/dist/chunk-n4nbgkvd.js +520 -0
  311. package/dist/chunk-n5gkdn9v.js +120 -0
  312. package/dist/chunk-n7ttdtk0.js +641 -0
  313. package/dist/chunk-n8b1njwb.js +208 -0
  314. package/dist/chunk-nek12gtk.js +94 -0
  315. package/dist/chunk-nerv0jvx.js +74 -0
  316. package/dist/chunk-nka1g8f4.js +773 -0
  317. package/dist/chunk-nm2cncrq.js +336 -0
  318. package/dist/chunk-nq0fxyxh.js +752 -0
  319. package/dist/chunk-nrnkshv2.js +192 -0
  320. package/dist/chunk-nsqma629.js +128 -0
  321. package/dist/chunk-nt837qt9.js +21 -0
  322. package/dist/chunk-nttf3k0r.js +2643 -0
  323. package/dist/chunk-nx638j6h.js +268 -0
  324. package/dist/chunk-nx7s0zn5.js +375 -0
  325. package/dist/chunk-p0hff8zy.js +8871 -0
  326. package/dist/chunk-p2816w9z.js +1486 -0
  327. package/dist/chunk-p2d5nh3g.js +342 -0
  328. package/dist/chunk-p57bz7nv.js +55 -0
  329. package/dist/chunk-p5z8t6r3.js +130 -0
  330. package/dist/chunk-pd6653na.js +5394 -0
  331. package/dist/chunk-pjnzf3cg.js +61 -0
  332. package/dist/chunk-ps49ymvj.js +43 -0
  333. package/dist/chunk-pthzapbx.js +348 -0
  334. package/dist/chunk-pwwa7s62.js +11 -0
  335. package/dist/chunk-pyx135a5.js +20 -0
  336. package/dist/chunk-q132dkwr.js +195 -0
  337. package/dist/chunk-q16y18s1.js +120 -0
  338. package/dist/chunk-q25bjaev.js +15 -0
  339. package/dist/chunk-q3jxs36m.js +716 -0
  340. package/dist/chunk-q5by3da6.js +8 -0
  341. package/dist/chunk-q663msp4.js +908 -0
  342. package/dist/chunk-qezgfppb.js +4521 -0
  343. package/dist/chunk-qgjgqmy5.js +5796 -0
  344. package/dist/chunk-qj7h3xc3.js +40 -0
  345. package/dist/chunk-qjcxkbv6.js +644 -0
  346. package/dist/chunk-qnfx3qtx.js +617 -0
  347. package/dist/chunk-qnmyzsam.js +84 -0
  348. package/dist/chunk-qp2qdcda.js +100 -0
  349. package/dist/chunk-qvrq1sby.js +6107 -0
  350. package/dist/chunk-qz2x630m.js +49145 -0
  351. package/dist/chunk-qz3fe4fj.js +469 -0
  352. package/dist/chunk-r0af6bw0.js +173 -0
  353. package/dist/chunk-r1v8d6da.js +1299 -0
  354. package/dist/chunk-r6b58y3x.js +17 -0
  355. package/dist/chunk-r6e45bzh.js +118 -0
  356. package/dist/chunk-r843jezp.js +28 -0
  357. package/dist/chunk-rbgjkg3v.js +90 -0
  358. package/dist/chunk-rc5bbzx4.js +655 -0
  359. package/dist/chunk-rca5xtnd.js +267 -0
  360. package/dist/chunk-rfdbzyjh.js +1865 -0
  361. package/dist/chunk-rh7q28df.js +93 -0
  362. package/dist/chunk-rn0v1hk8.js +34 -0
  363. package/dist/chunk-rvxs7x7j.js +542 -0
  364. package/dist/chunk-rw6fwk2s.js +98 -0
  365. package/dist/chunk-rwagvxh5.js +1711 -0
  366. package/dist/chunk-s10vyjz4.js +224 -0
  367. package/dist/chunk-s274nv8k.js +8 -0
  368. package/dist/chunk-s3pzvdss.js +50 -0
  369. package/dist/chunk-s4w01jsb.js +969 -0
  370. package/dist/chunk-s56j2d6g.js +500 -0
  371. package/dist/chunk-sbs1r0h4.js +317 -0
  372. package/dist/chunk-sd36yzx8.js +954 -0
  373. package/dist/chunk-sd6env07.js +19 -0
  374. package/dist/chunk-sdj9b9wh.js +782 -0
  375. package/dist/chunk-sfht9xvd.js +24 -0
  376. package/dist/chunk-sk3gpkdt.js +89 -0
  377. package/dist/chunk-sp5cjcjh.js +526 -0
  378. package/dist/chunk-sq847dr5.js +1528 -0
  379. package/dist/chunk-sskngwam.js +89 -0
  380. package/dist/chunk-svar8pp2.js +276 -0
  381. package/dist/chunk-szj5wvdy.js +28 -0
  382. package/dist/chunk-t175chdd.js +714 -0
  383. package/dist/chunk-t4k75hqs.js +4987 -0
  384. package/dist/chunk-t7z7vg91.js +225 -0
  385. package/dist/chunk-tanfpxm1.js +419 -0
  386. package/dist/chunk-tf9h0cyj.js +3037 -0
  387. package/dist/chunk-tm1wwvm1.js +99 -0
  388. package/dist/chunk-trtgjd28.js +9300 -0
  389. package/dist/chunk-ts2p6bv1.js +224 -0
  390. package/dist/chunk-ttk5dzz8.js +25 -0
  391. package/dist/chunk-tvg352rv.js +391 -0
  392. package/dist/chunk-tww14j0s.js +86 -0
  393. package/dist/chunk-tz03j2da.js +66 -0
  394. package/dist/chunk-v1kzp02e.js +785 -0
  395. package/dist/chunk-v2sm9w6h.js +220 -0
  396. package/dist/chunk-v3gm2day.js +8 -0
  397. package/dist/chunk-v4qn3g0d.js +286 -0
  398. package/dist/chunk-v66tbnn6.js +476 -0
  399. package/dist/chunk-v78fj8by.js +145 -0
  400. package/dist/chunk-v9smspw2.js +4301 -0
  401. package/dist/chunk-v9ybze94.js +713 -0
  402. package/dist/chunk-vest0y6x.js +3830 -0
  403. package/dist/chunk-vf5sd1nq.js +12 -0
  404. package/dist/chunk-vht4mzgb.js +298 -0
  405. package/dist/chunk-vjwgf4qh.js +41 -0
  406. package/dist/chunk-vkrhafhf.js +248 -0
  407. package/dist/chunk-vn56q87z.js +2058 -0
  408. package/dist/chunk-vscz82fv.js +27 -0
  409. package/dist/chunk-vvn4gkak.js +642 -0
  410. package/dist/chunk-vxj5rbg5.js +84 -0
  411. package/dist/chunk-vyjeh50y.js +2149 -0
  412. package/dist/chunk-w44nvpvt.js +22 -0
  413. package/dist/chunk-waambva2.js +2430 -0
  414. package/dist/chunk-wbhsqc2a.js +275 -0
  415. package/dist/chunk-wbsnpxzh.js +471 -0
  416. package/dist/chunk-wfz0qffj.js +3939 -0
  417. package/dist/chunk-wpqbrv0f.js +83 -0
  418. package/dist/chunk-wzpdet3m.js +843 -0
  419. package/dist/chunk-x6tb96y2.js +264 -0
  420. package/dist/chunk-x8b7vft8.js +132 -0
  421. package/dist/chunk-x8eg216f.js +99 -0
  422. package/dist/chunk-xc9khn0r.js +490 -0
  423. package/dist/chunk-xch406a3.js +673 -0
  424. package/dist/chunk-xdw5dv00.js +8 -0
  425. package/dist/chunk-xe0bpcbr.js +3444 -0
  426. package/dist/chunk-xm3ed3zn.js +300 -0
  427. package/dist/chunk-xpm4ebhz.js +87 -0
  428. package/dist/chunk-xr6yfttj.js +43 -0
  429. package/dist/chunk-xsq9ae7x.js +90 -0
  430. package/dist/chunk-xszk7n10.js +14358 -0
  431. package/dist/chunk-xzmkekfb.js +259 -0
  432. package/dist/chunk-y1784krc.js +19 -0
  433. package/dist/chunk-y3py9g5d.js +213 -0
  434. package/dist/chunk-y9nnmev5.js +687 -0
  435. package/dist/chunk-ya6jq0hf.js +29 -0
  436. package/dist/chunk-ycc3xnx0.js +374 -0
  437. package/dist/chunk-yfa54ssn.js +87 -0
  438. package/dist/chunk-ymy4xrr8.js +101 -0
  439. package/dist/chunk-yqfz2k9z.js +48 -0
  440. package/dist/chunk-ywxd4qw4.js +22 -0
  441. package/dist/chunk-yxmz5k16.js +122 -0
  442. package/dist/chunk-yxvy4jt4.js +1014 -0
  443. package/dist/chunk-z2dp53wn.js +17 -0
  444. package/dist/chunk-z2xxx2sz.js +294 -0
  445. package/dist/chunk-z31an09g.js +67 -0
  446. package/dist/chunk-z95xqvr0.js +75 -0
  447. package/dist/chunk-zbmxxxz8.js +161 -0
  448. package/dist/chunk-zk2wsm7d.js +15 -0
  449. package/dist/chunk-zmg1pcp3.js +71 -0
  450. package/dist/chunk-znrwmznk.js +272 -0
  451. package/dist/chunk-zq9r43cb.js +26 -0
  452. package/dist/chunk-zsfxha74.js +17655 -0
  453. package/dist/chunk-ztpr96av.js +229 -0
  454. package/dist/chunk-zv7qrz04.js +58 -0
  455. package/dist/chunk-zxa7st21.js +32 -0
  456. package/dist/chunk-zxhezavg.js +216 -0
  457. package/dist/chunk-zz0qcq2n.js +434 -0
  458. package/dist/cli.js +194 -0
  459. package/package.json +164 -0
@@ -0,0 +1,224 @@
1
+ // @bun
2
+ import {
3
+ Anthropic,
4
+ AnthropicError,
5
+ BaseAnthropic,
6
+ Beta,
7
+ Messages,
8
+ init_client,
9
+ init_error,
10
+ init_resources
11
+ } from "./chunk-7739pg2c.js";
12
+ import {
13
+ __esm
14
+ } from "./chunk-qp2qdcda.js";
15
+
16
+ // node_modules/.bun/@anthropic-ai+foundry-sdk@0.2.3+3c5d820c62823f0b/node_modules/@anthropic-ai/foundry-sdk/core/error.mjs
17
+ var init_error2 = __esm(() => {
18
+ init_error();
19
+ });
20
+
21
+ // node_modules/.bun/@anthropic-ai+foundry-sdk@0.2.3+3c5d820c62823f0b/node_modules/@anthropic-ai/foundry-sdk/internal/utils/values.mjs
22
+ var isArray = (val) => (isArray = Array.isArray, isArray(val)), isReadonlyArray;
23
+ var init_values = __esm(() => {
24
+ init_error2();
25
+ isReadonlyArray = isArray;
26
+ });
27
+
28
+ // node_modules/.bun/@anthropic-ai+foundry-sdk@0.2.3+3c5d820c62823f0b/node_modules/@anthropic-ai/foundry-sdk/internal/headers.mjs
29
+ function* iterateHeaders(headers) {
30
+ if (!headers)
31
+ return;
32
+ if (brand_privateNullableHeaders in headers) {
33
+ const { values, nulls } = headers;
34
+ yield* values.entries();
35
+ for (const name of nulls) {
36
+ yield [name, null];
37
+ }
38
+ return;
39
+ }
40
+ let shouldClear = false;
41
+ let iter;
42
+ if (headers instanceof Headers) {
43
+ iter = headers.entries();
44
+ } else if (isReadonlyArray(headers)) {
45
+ iter = headers;
46
+ } else {
47
+ shouldClear = true;
48
+ iter = Object.entries(headers ?? {});
49
+ }
50
+ for (let row of iter) {
51
+ const name = row[0];
52
+ if (typeof name !== "string")
53
+ throw new TypeError("expected header name to be a string");
54
+ const values = isReadonlyArray(row[1]) ? row[1] : [row[1]];
55
+ let didClear = false;
56
+ for (const value of values) {
57
+ if (value === undefined)
58
+ continue;
59
+ if (shouldClear && !didClear) {
60
+ didClear = true;
61
+ yield [name, null];
62
+ }
63
+ yield [name, value];
64
+ }
65
+ }
66
+ }
67
+ var brand_privateNullableHeaders, buildHeaders = (newHeaders) => {
68
+ const targetHeaders = new Headers;
69
+ const nullHeaders = new Set;
70
+ for (const headers of newHeaders) {
71
+ const seenHeaders = new Set;
72
+ for (const [name, value] of iterateHeaders(headers)) {
73
+ const lowerName = name.toLowerCase();
74
+ if (!seenHeaders.has(lowerName)) {
75
+ targetHeaders.delete(name);
76
+ seenHeaders.add(lowerName);
77
+ }
78
+ if (value === null) {
79
+ targetHeaders.delete(name);
80
+ nullHeaders.add(lowerName);
81
+ } else {
82
+ targetHeaders.append(name, value);
83
+ nullHeaders.delete(lowerName);
84
+ }
85
+ }
86
+ }
87
+ return { [brand_privateNullableHeaders]: true, values: targetHeaders, nulls: nullHeaders };
88
+ };
89
+ var init_headers = __esm(() => {
90
+ init_values();
91
+ brand_privateNullableHeaders = Symbol.for("brand.privateNullableHeaders");
92
+ });
93
+
94
+ // node_modules/.bun/@anthropic-ai+foundry-sdk@0.2.3+3c5d820c62823f0b/node_modules/@anthropic-ai/foundry-sdk/internal/utils/bytes.mjs
95
+ var init_bytes = () => {};
96
+
97
+ // node_modules/.bun/@anthropic-ai+foundry-sdk@0.2.3+3c5d820c62823f0b/node_modules/@anthropic-ai/foundry-sdk/internal/utils/base64.mjs
98
+ var init_base64 = __esm(() => {
99
+ init_error2();
100
+ init_bytes();
101
+ });
102
+
103
+ // node_modules/.bun/@anthropic-ai+foundry-sdk@0.2.3+3c5d820c62823f0b/node_modules/@anthropic-ai/foundry-sdk/internal/utils/env.mjs
104
+ var readEnv = (env) => {
105
+ if (typeof globalThis.process !== "undefined") {
106
+ return globalThis.process.env?.[env]?.trim() ?? undefined;
107
+ }
108
+ if (typeof globalThis.Deno !== "undefined") {
109
+ return globalThis.Deno.env?.get?.(env)?.trim();
110
+ }
111
+ return;
112
+ };
113
+ var init_env = () => {};
114
+
115
+ // node_modules/.bun/@anthropic-ai+foundry-sdk@0.2.3+3c5d820c62823f0b/node_modules/@anthropic-ai/foundry-sdk/internal/utils/log.mjs
116
+ var init_log = __esm(() => {
117
+ init_values();
118
+ });
119
+
120
+ // node_modules/.bun/@anthropic-ai+foundry-sdk@0.2.3+3c5d820c62823f0b/node_modules/@anthropic-ai/foundry-sdk/internal/utils/uuid.mjs
121
+ var init_uuid = () => {};
122
+
123
+ // node_modules/.bun/@anthropic-ai+foundry-sdk@0.2.3+3c5d820c62823f0b/node_modules/@anthropic-ai/foundry-sdk/internal/utils/sleep.mjs
124
+ var init_sleep = () => {};
125
+
126
+ // node_modules/.bun/@anthropic-ai+foundry-sdk@0.2.3+3c5d820c62823f0b/node_modules/@anthropic-ai/foundry-sdk/internal/utils.mjs
127
+ var init_utils = __esm(() => {
128
+ init_values();
129
+ init_base64();
130
+ init_env();
131
+ init_log();
132
+ init_uuid();
133
+ init_sleep();
134
+ });
135
+
136
+ // node_modules/.bun/@anthropic-ai+foundry-sdk@0.2.3+3c5d820c62823f0b/node_modules/@anthropic-ai/foundry-sdk/client.mjs
137
+ function makeMessagesResource(client) {
138
+ const resource = new Messages(client);
139
+ delete resource.batches;
140
+ return resource;
141
+ }
142
+ function makeBetaResource(client) {
143
+ const resource = new Beta(client);
144
+ delete resource.messages.batches;
145
+ return resource;
146
+ }
147
+ var AnthropicFoundry;
148
+ var init_client2 = __esm(() => {
149
+ init_headers();
150
+ init_error2();
151
+ init_utils();
152
+ init_client();
153
+ init_client();
154
+ init_resources();
155
+ AnthropicFoundry = class AnthropicFoundry extends Anthropic {
156
+ constructor({ baseURL = readEnv("ANTHROPIC_FOUNDRY_BASE_URL"), apiKey = readEnv("ANTHROPIC_FOUNDRY_API_KEY"), resource = readEnv("ANTHROPIC_FOUNDRY_RESOURCE"), azureADTokenProvider, dangerouslyAllowBrowser, ...opts } = {}) {
157
+ if (typeof azureADTokenProvider === "function") {
158
+ dangerouslyAllowBrowser = true;
159
+ }
160
+ if (!azureADTokenProvider && !apiKey) {
161
+ throw new AnthropicError("Missing credentials. Please pass one of `apiKey` and `azureTokenProvider`, or set the `ANTHROPIC_FOUNDRY_API_KEY` environment variable.");
162
+ }
163
+ if (azureADTokenProvider && apiKey) {
164
+ throw new AnthropicError("The `apiKey` and `azureADTokenProvider` arguments are mutually exclusive; only one can be passed at a time.");
165
+ }
166
+ if (!baseURL) {
167
+ if (!resource) {
168
+ throw new AnthropicError("Must provide one of the `baseURL` or `resource` arguments, or the `ANTHROPIC_FOUNDRY_RESOURCE` environment variable");
169
+ }
170
+ baseURL = `https://${resource}.services.ai.azure.com/anthropic/`;
171
+ } else {
172
+ if (resource) {
173
+ throw new AnthropicError("baseURL and resource are mutually exclusive");
174
+ }
175
+ }
176
+ super({
177
+ apiKey: azureADTokenProvider ?? apiKey,
178
+ baseURL,
179
+ ...opts,
180
+ ...dangerouslyAllowBrowser !== undefined ? { dangerouslyAllowBrowser } : {}
181
+ });
182
+ this.resource = null;
183
+ this.messages = makeMessagesResource(this);
184
+ this.beta = makeBetaResource(this);
185
+ this.models = undefined;
186
+ }
187
+ async authHeaders() {
188
+ if (typeof this._options.apiKey === "function") {
189
+ let token;
190
+ try {
191
+ token = await this._options.apiKey();
192
+ } catch (err) {
193
+ if (err instanceof AnthropicError)
194
+ throw err;
195
+ throw new AnthropicError(`Failed to get token from azureADTokenProvider: ${err.message}`, { cause: err });
196
+ }
197
+ if (typeof token !== "string" || !token) {
198
+ throw new AnthropicError(`Expected azureADTokenProvider function argument to return a string but it returned ${token}`);
199
+ }
200
+ return buildHeaders([{ Authorization: `Bearer ${token}` }]);
201
+ }
202
+ if (typeof this._options.apiKey === "string") {
203
+ return buildHeaders([{ "x-api-key": this.apiKey }]);
204
+ }
205
+ return;
206
+ }
207
+ validateHeaders() {
208
+ return;
209
+ }
210
+ };
211
+ });
212
+
213
+ // node_modules/.bun/@anthropic-ai+foundry-sdk@0.2.3+3c5d820c62823f0b/node_modules/@anthropic-ai/foundry-sdk/index.mjs
214
+ var init_foundry_sdk = __esm(() => {
215
+ init_client2();
216
+ init_client2();
217
+ });
218
+ init_foundry_sdk();
219
+
220
+ export {
221
+ AnthropicFoundry as default,
222
+ BaseAnthropic,
223
+ AnthropicFoundry
224
+ };
@@ -0,0 +1,25 @@
1
+ // @bun
2
+ import {
3
+ ENV_ACCOUNT_ID,
4
+ ENV_CREDENTIAL_SCOPE,
5
+ ENV_EXPIRATION,
6
+ ENV_KEY,
7
+ ENV_SECRET,
8
+ ENV_SESSION,
9
+ fromEnv,
10
+ init_dist_es
11
+ } from "./chunk-3h8a89gy.js";
12
+ import"./chunk-b4wg70y1.js";
13
+ import"./chunk-hk9xz7gk.js";
14
+ import"./chunk-qp2qdcda.js";
15
+ init_dist_es();
16
+
17
+ export {
18
+ fromEnv,
19
+ ENV_SESSION,
20
+ ENV_SECRET,
21
+ ENV_KEY,
22
+ ENV_EXPIRATION,
23
+ ENV_CREDENTIAL_SCOPE,
24
+ ENV_ACCOUNT_ID
25
+ };
@@ -0,0 +1,391 @@
1
+ // @bun
2
+ import"./chunk-6n2qgm9v.js";
3
+ import {
4
+ getSecureSocketPath,
5
+ getSocketDir,
6
+ init_common
7
+ } from "./chunk-6wkdqk81.js";
8
+ import"./chunk-3c25bcsw.js";
9
+ import"./chunk-mzdtkccs.js";
10
+ import {
11
+ exports_external,
12
+ init_lazySchema,
13
+ lazySchema
14
+ } from "./chunk-55wgxwa9.js";
15
+ import"./chunk-f2zhqnb6.js";
16
+ import"./chunk-cvp5vayb.js";
17
+ import"./chunk-b5b7h81y.js";
18
+ import"./chunk-nm2cncrq.js";
19
+ import"./chunk-8tnsngw2.js";
20
+ import"./chunk-0rkbrabt.js";
21
+ import"./chunk-7wm5s02e.js";
22
+ import {
23
+ init_slowOperations,
24
+ jsonParse,
25
+ jsonStringify
26
+ } from "./chunk-rwagvxh5.js";
27
+ import"./chunk-fbv4apne.js";
28
+ import"./chunk-0fkqze0v.js";
29
+ import"./chunk-2zcaw1jd.js";
30
+ import"./chunk-hqmz36b3.js";
31
+ import"./chunk-4g3v8y12.js";
32
+ import"./chunk-7739pg2c.js";
33
+ import"./chunk-qp2qdcda.js";
34
+
35
+ // src/utils/claudeInChrome/chromeNativeHost.ts
36
+ import {
37
+ appendFile,
38
+ chmod,
39
+ mkdir,
40
+ readdir,
41
+ rmdir,
42
+ stat,
43
+ unlink
44
+ } from "fs/promises";
45
+ import { createServer } from "net";
46
+ import { homedir, platform } from "os";
47
+ import { join } from "path";
48
+ init_lazySchema();
49
+ init_slowOperations();
50
+ init_common();
51
+ var VERSION = "1.0.0";
52
+ var MAX_MESSAGE_SIZE = 1024 * 1024;
53
+ var LOG_FILE = process.env.USER_TYPE === "ant" ? join(homedir(), ".claude", "debug", "chrome-native-host.txt") : undefined;
54
+ function log(message, ...args) {
55
+ if (LOG_FILE) {
56
+ const timestamp = new Date().toISOString();
57
+ const formattedArgs = args.length > 0 ? " " + jsonStringify(args) : "";
58
+ const logLine = `[${timestamp}] [Claude Chrome Native Host] ${message}${formattedArgs}
59
+ `;
60
+ appendFile(LOG_FILE, logLine).catch(() => {});
61
+ }
62
+ console.error(`[Claude Chrome Native Host] ${message}`, ...args);
63
+ }
64
+ function sendChromeMessage(message) {
65
+ const jsonBytes = Buffer.from(message, "utf-8");
66
+ const lengthBuffer = Buffer.alloc(4);
67
+ lengthBuffer.writeUInt32LE(jsonBytes.length, 0);
68
+ process.stdout.write(lengthBuffer);
69
+ process.stdout.write(jsonBytes);
70
+ }
71
+ async function runChromeNativeHost() {
72
+ log("Initializing...");
73
+ const host = new ChromeNativeHost;
74
+ const messageReader = new ChromeMessageReader;
75
+ await host.start();
76
+ while (true) {
77
+ const message = await messageReader.read();
78
+ if (message === null) {
79
+ break;
80
+ }
81
+ await host.handleMessage(message);
82
+ }
83
+ await host.stop();
84
+ }
85
+ var messageSchema = lazySchema(() => exports_external.object({
86
+ type: exports_external.string()
87
+ }).passthrough());
88
+
89
+ class ChromeNativeHost {
90
+ mcpClients = new Map;
91
+ nextClientId = 1;
92
+ server = null;
93
+ running = false;
94
+ socketPath = null;
95
+ async start() {
96
+ if (this.running) {
97
+ return;
98
+ }
99
+ this.socketPath = getSecureSocketPath();
100
+ if (platform() !== "win32") {
101
+ const socketDir = getSocketDir();
102
+ try {
103
+ const dirStats = await stat(socketDir);
104
+ if (!dirStats.isDirectory()) {
105
+ await unlink(socketDir);
106
+ }
107
+ } catch {}
108
+ await mkdir(socketDir, { recursive: true, mode: 448 });
109
+ await chmod(socketDir, 448).catch(() => {});
110
+ try {
111
+ const files = await readdir(socketDir);
112
+ for (const file of files) {
113
+ if (!file.endsWith(".sock")) {
114
+ continue;
115
+ }
116
+ const pid = parseInt(file.replace(".sock", ""), 10);
117
+ if (isNaN(pid)) {
118
+ continue;
119
+ }
120
+ try {
121
+ process.kill(pid, 0);
122
+ } catch {
123
+ await unlink(join(socketDir, file)).catch(() => {});
124
+ log(`Removed stale socket for PID ${pid}`);
125
+ }
126
+ }
127
+ } catch {}
128
+ }
129
+ log(`Creating socket listener: ${this.socketPath}`);
130
+ this.server = createServer((socket) => this.handleMcpClient(socket));
131
+ await new Promise((resolve, reject) => {
132
+ this.server.listen(this.socketPath, () => {
133
+ log("Socket server listening for connections");
134
+ this.running = true;
135
+ resolve();
136
+ });
137
+ this.server.on("error", (err) => {
138
+ log("Socket server error:", err);
139
+ reject(err);
140
+ });
141
+ });
142
+ if (platform() !== "win32") {
143
+ try {
144
+ await chmod(this.socketPath, 384);
145
+ log("Socket permissions set to 0600");
146
+ } catch (e) {
147
+ log("Failed to set socket permissions:", e);
148
+ }
149
+ }
150
+ }
151
+ async stop() {
152
+ if (!this.running) {
153
+ return;
154
+ }
155
+ for (const [, client] of this.mcpClients) {
156
+ client.socket.destroy();
157
+ }
158
+ this.mcpClients.clear();
159
+ if (this.server) {
160
+ await new Promise((resolve) => {
161
+ this.server.close(() => resolve());
162
+ });
163
+ this.server = null;
164
+ }
165
+ if (platform() !== "win32" && this.socketPath) {
166
+ try {
167
+ await unlink(this.socketPath);
168
+ log("Cleaned up socket file");
169
+ } catch {}
170
+ try {
171
+ const socketDir = getSocketDir();
172
+ const remaining = await readdir(socketDir);
173
+ if (remaining.length === 0) {
174
+ await rmdir(socketDir);
175
+ log("Removed empty socket directory");
176
+ }
177
+ } catch {}
178
+ }
179
+ this.running = false;
180
+ }
181
+ async isRunning() {
182
+ return this.running;
183
+ }
184
+ async getClientCount() {
185
+ return this.mcpClients.size;
186
+ }
187
+ async handleMessage(messageJson) {
188
+ let rawMessage;
189
+ try {
190
+ rawMessage = jsonParse(messageJson);
191
+ } catch (e) {
192
+ log("Invalid JSON from Chrome:", e.message);
193
+ sendChromeMessage(jsonStringify({
194
+ type: "error",
195
+ error: "Invalid message format"
196
+ }));
197
+ return;
198
+ }
199
+ const parsed = messageSchema().safeParse(rawMessage);
200
+ if (!parsed.success) {
201
+ log("Invalid message from Chrome:", parsed.error.message);
202
+ sendChromeMessage(jsonStringify({
203
+ type: "error",
204
+ error: "Invalid message format"
205
+ }));
206
+ return;
207
+ }
208
+ const message = parsed.data;
209
+ log(`Handling Chrome message type: ${message.type}`);
210
+ switch (message.type) {
211
+ case "ping":
212
+ log("Responding to ping");
213
+ sendChromeMessage(jsonStringify({
214
+ type: "pong",
215
+ timestamp: Date.now()
216
+ }));
217
+ break;
218
+ case "get_status":
219
+ sendChromeMessage(jsonStringify({
220
+ type: "status_response",
221
+ native_host_version: VERSION
222
+ }));
223
+ break;
224
+ case "tool_response": {
225
+ if (this.mcpClients.size > 0) {
226
+ log(`Forwarding tool response to ${this.mcpClients.size} MCP clients`);
227
+ const { type: _, ...data } = message;
228
+ const responseData = Buffer.from(jsonStringify(data), "utf-8");
229
+ const lengthBuffer = Buffer.alloc(4);
230
+ lengthBuffer.writeUInt32LE(responseData.length, 0);
231
+ const responseMsg = Buffer.concat([lengthBuffer, responseData]);
232
+ for (const [id, client] of this.mcpClients) {
233
+ try {
234
+ client.socket.write(responseMsg);
235
+ } catch (e) {
236
+ log(`Failed to send to MCP client ${id}:`, e);
237
+ }
238
+ }
239
+ }
240
+ break;
241
+ }
242
+ case "notification": {
243
+ if (this.mcpClients.size > 0) {
244
+ log(`Forwarding notification to ${this.mcpClients.size} MCP clients`);
245
+ const { type: _, ...data } = message;
246
+ const notificationData = Buffer.from(jsonStringify(data), "utf-8");
247
+ const lengthBuffer = Buffer.alloc(4);
248
+ lengthBuffer.writeUInt32LE(notificationData.length, 0);
249
+ const notificationMsg = Buffer.concat([
250
+ lengthBuffer,
251
+ notificationData
252
+ ]);
253
+ for (const [id, client] of this.mcpClients) {
254
+ try {
255
+ client.socket.write(notificationMsg);
256
+ } catch (e) {
257
+ log(`Failed to send notification to MCP client ${id}:`, e);
258
+ }
259
+ }
260
+ }
261
+ break;
262
+ }
263
+ default:
264
+ log(`Unknown message type: ${message.type}`);
265
+ sendChromeMessage(jsonStringify({
266
+ type: "error",
267
+ error: `Unknown message type: ${message.type}`
268
+ }));
269
+ }
270
+ }
271
+ handleMcpClient(socket) {
272
+ const clientId = this.nextClientId++;
273
+ const client = {
274
+ id: clientId,
275
+ socket,
276
+ buffer: Buffer.alloc(0)
277
+ };
278
+ this.mcpClients.set(clientId, client);
279
+ log(`MCP client ${clientId} connected. Total clients: ${this.mcpClients.size}`);
280
+ sendChromeMessage(jsonStringify({
281
+ type: "mcp_connected"
282
+ }));
283
+ socket.on("data", (data) => {
284
+ client.buffer = Buffer.concat([client.buffer, data]);
285
+ while (client.buffer.length >= 4) {
286
+ const length = client.buffer.readUInt32LE(0);
287
+ if (length === 0 || length > MAX_MESSAGE_SIZE) {
288
+ log(`Invalid message length from MCP client ${clientId}: ${length}`);
289
+ socket.destroy();
290
+ return;
291
+ }
292
+ if (client.buffer.length < 4 + length) {
293
+ break;
294
+ }
295
+ const messageBytes = client.buffer.slice(4, 4 + length);
296
+ client.buffer = client.buffer.slice(4 + length);
297
+ try {
298
+ const request = jsonParse(messageBytes.toString("utf-8"));
299
+ log(`Forwarding tool request from MCP client ${clientId}: ${request.method}`);
300
+ sendChromeMessage(jsonStringify({
301
+ type: "tool_request",
302
+ method: request.method,
303
+ params: request.params
304
+ }));
305
+ } catch (e) {
306
+ log(`Failed to parse tool request from MCP client ${clientId}:`, e);
307
+ }
308
+ }
309
+ });
310
+ socket.on("error", (err) => {
311
+ log(`MCP client ${clientId} error: ${err}`);
312
+ });
313
+ socket.on("close", () => {
314
+ log(`MCP client ${clientId} disconnected. Remaining clients: ${this.mcpClients.size - 1}`);
315
+ this.mcpClients.delete(clientId);
316
+ sendChromeMessage(jsonStringify({
317
+ type: "mcp_disconnected"
318
+ }));
319
+ });
320
+ }
321
+ }
322
+
323
+ class ChromeMessageReader {
324
+ buffer = Buffer.alloc(0);
325
+ pendingResolve = null;
326
+ closed = false;
327
+ constructor() {
328
+ process.stdin.on("data", (chunk) => {
329
+ this.buffer = Buffer.concat([this.buffer, chunk]);
330
+ this.tryProcessMessage();
331
+ });
332
+ process.stdin.on("end", () => {
333
+ this.closed = true;
334
+ if (this.pendingResolve) {
335
+ this.pendingResolve(null);
336
+ this.pendingResolve = null;
337
+ }
338
+ });
339
+ process.stdin.on("error", () => {
340
+ this.closed = true;
341
+ if (this.pendingResolve) {
342
+ this.pendingResolve(null);
343
+ this.pendingResolve = null;
344
+ }
345
+ });
346
+ }
347
+ tryProcessMessage() {
348
+ if (!this.pendingResolve) {
349
+ return;
350
+ }
351
+ if (this.buffer.length < 4) {
352
+ return;
353
+ }
354
+ const length = this.buffer.readUInt32LE(0);
355
+ if (length === 0 || length > MAX_MESSAGE_SIZE) {
356
+ log(`Invalid message length: ${length}`);
357
+ this.pendingResolve(null);
358
+ this.pendingResolve = null;
359
+ return;
360
+ }
361
+ if (this.buffer.length < 4 + length) {
362
+ return;
363
+ }
364
+ const messageBytes = this.buffer.subarray(4, 4 + length);
365
+ this.buffer = this.buffer.subarray(4 + length);
366
+ const message = messageBytes.toString("utf-8");
367
+ this.pendingResolve(message);
368
+ this.pendingResolve = null;
369
+ }
370
+ async read() {
371
+ if (this.closed) {
372
+ return null;
373
+ }
374
+ if (this.buffer.length >= 4) {
375
+ const length = this.buffer.readUInt32LE(0);
376
+ if (length > 0 && length <= MAX_MESSAGE_SIZE && this.buffer.length >= 4 + length) {
377
+ const messageBytes = this.buffer.subarray(4, 4 + length);
378
+ this.buffer = this.buffer.subarray(4 + length);
379
+ return messageBytes.toString("utf-8");
380
+ }
381
+ }
382
+ return new Promise((resolve) => {
383
+ this.pendingResolve = resolve;
384
+ this.tryProcessMessage();
385
+ });
386
+ }
387
+ }
388
+ export {
389
+ sendChromeMessage,
390
+ runChromeNativeHost
391
+ };