@unieai/code 0.0.11 → 0.0.13

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 (436) hide show
  1. package/dist/chunks/App-ncpmz34p.js +2 -0
  2. package/dist/chunks/ApproveApiKey-fqzjf1j3.js +2 -0
  3. package/dist/chunks/{assistant-ftzr3mjp.js → AssistantSessionChooser-wxmyvgcf.js} +1 -1
  4. package/dist/chunks/BypassPermissionsModeDialog-3ksmd8pp.js +2 -0
  5. package/dist/chunks/{ClaudeInChromeOnboarding-qa0pvwfw.js → ClaudeInChromeOnboarding-ckjppjhr.js} +1 -1
  6. package/dist/chunks/ClaudeMdExternalIncludesDialog-rrsfavte.js +2 -0
  7. package/dist/chunks/ConsoleOAuthFlow-04xt4sby.js +2 -0
  8. package/dist/chunks/{DiffDialog-t6vvtbb2.js → DiffDialog-ptnc4sgx.js} +1 -1
  9. package/dist/chunks/Doctor-kg5m2zma.js +2 -0
  10. package/dist/chunks/Grove-rf9xhe2e.js +2 -0
  11. package/dist/chunks/{ITermBackend-73waaahf.js → ITermBackend-wgbbpgpy.js} +1 -1
  12. package/dist/chunks/{InProcessTransport-qwjgb17j.js → InProcessTransport-vgh7qgjn.js} +1 -1
  13. package/dist/chunks/{InvalidConfigDialog-zmqw3fj1.js → InvalidConfigDialog-6spqsgmr.js} +1 -1
  14. package/dist/chunks/InvalidSettingsDialog-m6y6esgz.js +2 -0
  15. package/dist/chunks/{Onboarding-p0tq6pgz.js → Onboarding-j1m69bqm.js} +1 -1
  16. package/dist/chunks/REPL-qyytrhe5.js +2 -0
  17. package/dist/chunks/{ResumeConversation-krn9hqb1.js → ResumeConversation-wfhd5xb2.js} +1 -1
  18. package/dist/chunks/{SnapshotUpdateDialog-raq029pd.js → SnapshotUpdateDialog-aya2c2f9.js} +1 -1
  19. package/dist/chunks/{TeleportProgress-vyy2k3bv.js → TeleportProgress-kn3qgvd9.js} +1 -1
  20. package/dist/chunks/{TeleportRepoMismatchDialog-ff0h2cnq.js → TeleportRepoMismatchDialog-01v6e2qz.js} +1 -1
  21. package/dist/chunks/{TeleportResumeWrapper-esjykret.js → TeleportResumeWrapper-48dsm503.js} +1 -1
  22. package/dist/chunks/{TmuxBackend-14kmnkcb.js → TmuxBackend-s0bt8zqj.js} +1 -1
  23. package/dist/chunks/ToolSearchTool-4rm3kr13.js +2 -0
  24. package/dist/chunks/{TrustDialog-7fvaze2x.js → TrustDialog-xtn3kq0n.js} +1 -1
  25. package/dist/chunks/TungstenTool-3wjjz6cf.js +2 -0
  26. package/dist/chunks/{add-dir-kqw72mky.js → add-dir-z0kz5nf7.js} +1 -1
  27. package/dist/chunks/{agents-z66twpqr.js → agents-ex4cdx64.js} +1 -1
  28. package/dist/chunks/agents-w6zde2j9.js +4 -0
  29. package/dist/chunks/ant-claude-for-chrome-mcp-gr0b0jr4.js +2 -0
  30. package/dist/chunks/api-07pqphw5.js +2 -0
  31. package/dist/chunks/asciicast-2k1ztt6v.js +2 -0
  32. package/dist/chunks/{AssistantSessionChooser-g1vsya6h.js → assistant-bmwndz7j.js} +1 -1
  33. package/dist/chunks/{auth-wk077awh.js → auth-g2p039wk.js} +1 -1
  34. package/dist/chunks/auth-g509w5pr.js +2 -0
  35. package/dist/chunks/backgroundHousekeeping-hw0chw1d.js +2 -0
  36. package/dist/chunks/{branch-1d0b8590.js → branch-rdvbhvts.js} +1 -1
  37. package/dist/chunks/{bridgePointer-vhd47np6.js → bridgePointer-9rqn5tp6.js} +1 -1
  38. package/dist/chunks/{btw-s3r5jhyd.js → btw-xts6twbq.js} +1 -1
  39. package/dist/chunks/{buddy-xzm5npk8.js → buddy-yc09g048.js} +1 -1
  40. package/dist/chunks/{cachedMicrocompact-6j3zxr4g.js → cachedMicrocompact-fa2mdnyh.js} +1 -1
  41. package/dist/chunks/caches-3qzm958c.js +2 -0
  42. package/dist/chunks/{chrome-mdyx0s5j.js → chrome-gb6g0d5p.js} +1 -1
  43. package/dist/chunks/{chromeNativeHost-8wc6wcr6.js → chromeNativeHost-jsntnc29.js} +1 -1
  44. package/dist/chunks/{claudeDesktop-p5bfxmvz.js → claudeDesktop-me56qerx.js} +1 -1
  45. package/dist/chunks/{cleanup-q46nbce1.js → cleanup-hxj6tm50.js} +1 -1
  46. package/dist/chunks/clear-ssfbry3k.js +2 -0
  47. package/dist/chunks/{cli-bmk0rb5v.js → cli-07f2hk9d.js} +1 -1
  48. package/dist/chunks/{cli-h4a90xbh.js → cli-0nz8v3dj.js} +1 -1
  49. package/dist/chunks/{cli-fwrj8ybs.js → cli-16k24hzp.js} +1 -1
  50. package/dist/chunks/{cli-msmzt4c3.js → cli-192xnkcx.js} +1 -1
  51. package/dist/chunks/{cli-g4n9das2.js → cli-1eejy071.js} +1 -1
  52. package/dist/chunks/{cli-3m8n808e.js → cli-1p7nc6zb.js} +1 -1
  53. package/dist/chunks/{cli-s160fqyz.js → cli-1q1b8rgs.js} +1 -1
  54. package/dist/chunks/{cli-99mqr54v.js → cli-222ywgt0.js} +1 -1
  55. package/dist/chunks/{cli-f63fdj4w.js → cli-2428yw99.js} +1 -1
  56. package/dist/chunks/{cli-v943fd6a.js → cli-2fqrjjs9.js} +1 -1
  57. package/dist/chunks/{cli-t4j047cx.js → cli-2j6cv2kz.js} +1 -1
  58. package/dist/chunks/{cli-xpa1neza.js → cli-2sbq6ggm.js} +2 -2
  59. package/dist/chunks/{cli-8qd16mt4.js → cli-33tchr20.js} +1 -1
  60. package/dist/chunks/{cli-zjbzak9n.js → cli-3619x17q.js} +1 -1
  61. package/dist/chunks/{cli-gtm212j6.js → cli-3hrmwgsv.js} +1 -1
  62. package/dist/chunks/{cli-hzr2zraz.js → cli-3tkd82y4.js} +1 -1
  63. package/dist/chunks/{cli-zev50xap.js → cli-3tmtx9ka.js} +1 -1
  64. package/dist/chunks/{cli-xfsqvp8r.js → cli-4pwyex04.js} +1 -1
  65. package/dist/chunks/{cli-jj93qmmc.js → cli-5ajcy93q.js} +2 -2
  66. package/dist/chunks/{cli-0w4wc1z0.js → cli-5kehgkgh.js} +1 -1
  67. package/dist/chunks/{cli-fghyxar5.js → cli-601zv0wv.js} +1 -1
  68. package/dist/chunks/{cli-r3etpht1.js → cli-609dp2ck.js} +1 -1
  69. package/dist/chunks/{cli-ns0aaggm.js → cli-63wps6p0.js} +1 -1
  70. package/dist/chunks/{cli-m0z3rmf0.js → cli-64x5ghm5.js} +1 -1
  71. package/dist/chunks/{cli-de1hwp88.js → cli-67azkkwm.js} +1 -1
  72. package/dist/chunks/{cli-dbdqrqmt.js → cli-6cqemsm9.js} +1 -1
  73. package/dist/chunks/{cli-27mzrnr8.js → cli-6ee37m6j.js} +1 -1
  74. package/dist/chunks/{cli-mb1qrqw1.js → cli-6qt2xm18.js} +1 -1
  75. package/dist/chunks/{cli-49m97nbg.js → cli-7ed2q42n.js} +1 -1
  76. package/dist/chunks/{cli-s9fhtgmz.js → cli-7jw2qe69.js} +1 -1
  77. package/dist/chunks/cli-7k17xstr.js +3 -0
  78. package/dist/chunks/{cli-61x73ksv.js → cli-7n4d5yzr.js} +1 -1
  79. package/dist/chunks/{cli-p0vh69b9.js → cli-7wxv39ry.js} +2 -2
  80. package/dist/chunks/{cli-15sqp3mq.js → cli-8h10q2x8.js} +1 -1
  81. package/dist/chunks/{cli-yqbvprz7.js → cli-8j0b3b55.js} +1 -1
  82. package/dist/chunks/{cli-akcxtvv9.js → cli-8jym9hp6.js} +1 -1
  83. package/dist/chunks/{cli-4ewb3q42.js → cli-8kpqq0ea.js} +2 -2
  84. package/dist/chunks/{cli-2rw44zfx.js → cli-8xyb31dy.js} +1 -1
  85. package/dist/chunks/cli-8xz7dd7z.js +3 -0
  86. package/dist/chunks/{cli-g5wq5ptg.js → cli-8ykv66e4.js} +1 -1
  87. package/dist/chunks/{cli-jegyadmb.js → cli-8z8d5bgb.js} +1 -1
  88. package/dist/chunks/{cli-cqkne34j.js → cli-93sm9n17.js} +1 -1
  89. package/dist/chunks/{cli-q0156x0d.js → cli-97vx3m99.js} +1 -1
  90. package/dist/chunks/{cli-1jp3rm7n.js → cli-9e8f55fp.js} +1 -1
  91. package/dist/chunks/{cli-2wd8eaac.js → cli-9hqmq5g6.js} +1 -1
  92. package/dist/chunks/{cli-6bxfdgv1.js → cli-9tbmrp89.js} +1 -1
  93. package/dist/chunks/{cli-5dt9yjha.js → cli-9xtyh8c7.js} +1 -1
  94. package/dist/chunks/{cli-sh9w2tbd.js → cli-a1cx6p3g.js} +1 -1
  95. package/dist/chunks/{cli-ja540nr7.js → cli-a1dqnvy2.js} +1 -1
  96. package/dist/chunks/{cli-wt2bfbn0.js → cli-a25jeqs8.js} +1 -1
  97. package/dist/chunks/{cli-x8xgga1a.js → cli-a2d962bq.js} +2 -2
  98. package/dist/chunks/{cli-h120wpk2.js → cli-a826q5zk.js} +1 -1
  99. package/dist/chunks/{cli-k4v08k8t.js → cli-an97yxg9.js} +1 -1
  100. package/dist/chunks/{cli-m12smc5e.js → cli-asc9xmsr.js} +1 -1
  101. package/dist/chunks/{cli-hke6r0q8.js → cli-awb77t95.js} +2 -2
  102. package/dist/chunks/{cli-6yprtw88.js → cli-awe5yg6m.js} +1 -1
  103. package/dist/chunks/{cli-15w3eaed.js → cli-ax0ckqpv.js} +1 -1
  104. package/dist/chunks/{cli-mbp8f3f3.js → cli-b29enbbc.js} +1 -1
  105. package/dist/chunks/{cli-me4e2p3e.js → cli-b3k8arn1.js} +25 -25
  106. package/dist/chunks/{cli-c22wpdk4.js → cli-b5z57an7.js} +1 -1
  107. package/dist/chunks/{cli-0dc8sd37.js → cli-b8j8bm5m.js} +1 -1
  108. package/dist/chunks/{cli-51720d82.js → cli-bdgrtpsy.js} +2 -2
  109. package/dist/chunks/{cli-yrwenjxs.js → cli-bfm3f0yw.js} +1 -1
  110. package/dist/chunks/{cli-764c4bsm.js → cli-bj0csmzs.js} +1 -1
  111. package/dist/chunks/{cli-ms5j6fff.js → cli-bnr79ddy.js} +1 -1
  112. package/dist/chunks/{cli-a52ra30v.js → cli-bpj9na88.js} +1 -1
  113. package/dist/chunks/{cli-v9f860t5.js → cli-brr3bnrj.js} +1 -1
  114. package/dist/chunks/{cli-eyw3czmn.js → cli-bzrat9yd.js} +1 -1
  115. package/dist/chunks/{cli-msw0vv86.js → cli-ca1jmr8f.js} +1 -1
  116. package/dist/chunks/{cli-br6zjh6x.js → cli-ceas97gw.js} +1 -1
  117. package/dist/chunks/{cli-kqv5b8zh.js → cli-cfbfexxj.js} +1 -1
  118. package/dist/chunks/{cli-tckzkegq.js → cli-chvks6bg.js} +1 -1
  119. package/dist/chunks/cli-cmh6qwg8.js +3 -0
  120. package/dist/chunks/{cli-khs3sj9k.js → cli-d1w21hsm.js} +1 -1
  121. package/dist/chunks/{cli-z5e72gsd.js → cli-d2pn0xfj.js} +1 -1
  122. package/dist/chunks/{cli-fm14mg07.js → cli-df5r5xrp.js} +1 -1
  123. package/dist/chunks/{cli-2rwjx3w0.js → cli-dx0pk7k2.js} +1 -1
  124. package/dist/chunks/{cli-p2cqnrnp.js → cli-dy9qrrps.js} +1 -1
  125. package/dist/chunks/{cli-q46epwyh.js → cli-e3q6b1cv.js} +1 -1
  126. package/dist/chunks/{cli-fs7yttfp.js → cli-e4a4fjx9.js} +2 -2
  127. package/dist/chunks/{cli-t9jht3kb.js → cli-e5yek4vx.js} +2 -2
  128. package/dist/chunks/{cli-5f0w3fy6.js → cli-e9t5kfxm.js} +1 -1
  129. package/dist/chunks/{cli-1n8he7s8.js → cli-eh1wx76n.js} +1 -1
  130. package/dist/chunks/{cli-d0hzw78c.js → cli-ez2xsd4m.js} +1 -1
  131. package/dist/chunks/{cli-n5s5fnyj.js → cli-fdjfk8yq.js} +2 -2
  132. package/dist/chunks/{cli-rvad3yhg.js → cli-fnt125we.js} +2 -2
  133. package/dist/chunks/{cli-0qt9btbe.js → cli-fz053waw.js} +1 -1
  134. package/dist/chunks/{cli-89x414pj.js → cli-g2s3391y.js} +1 -1
  135. package/dist/chunks/cli-geka8fb7.js +3 -0
  136. package/dist/chunks/{cli-73jf8hyz.js → cli-gfweqbpz.js} +1 -1
  137. package/dist/chunks/{cli-tfv2qcgf.js → cli-gypyp608.js} +1 -1
  138. package/dist/chunks/{cli-1ny2386w.js → cli-h2t2hyz7.js} +1 -1
  139. package/dist/chunks/{cli-zp8s7q5w.js → cli-hp5gs22f.js} +1 -1
  140. package/dist/chunks/{cli-pgg33dhw.js → cli-hpxspent.js} +1 -1
  141. package/dist/chunks/{cli-ezs5sney.js → cli-hrmzaf5d.js} +2 -2
  142. package/dist/chunks/{cli-8dmy2s42.js → cli-hs2k9997.js} +1 -1
  143. package/dist/chunks/{cli-19ncan36.js → cli-j403r21v.js} +1 -1
  144. package/dist/chunks/{cli-wn2srq2e.js → cli-j4r75xsd.js} +1 -1
  145. package/dist/chunks/{cli-5vsnhp97.js → cli-jmq1x925.js} +1 -1
  146. package/dist/chunks/{cli-sycqd3xe.js → cli-jnc0ze6w.js} +4 -4
  147. package/dist/chunks/{cli-4nejhkd0.js → cli-jrwh6rs0.js} +1 -1
  148. package/dist/chunks/{cli-vwg0v35a.js → cli-jz50hv3m.js} +1 -1
  149. package/dist/chunks/{cli-vkvmhjha.js → cli-jz8jcrhh.js} +1 -1
  150. package/dist/chunks/{cli-nvnj7r73.js → cli-ktzyyx91.js} +1 -1
  151. package/dist/chunks/{cli-9aq7vxaq.js → cli-kx3r72jp.js} +1 -1
  152. package/dist/chunks/{cli-tyqh91zq.js → cli-m3r80gy0.js} +1 -1
  153. package/dist/chunks/{cli-9z9r2set.js → cli-m6amgxq3.js} +1 -1
  154. package/dist/chunks/{cli-qaxvg7gv.js → cli-mcbntv3p.js} +1 -1
  155. package/dist/chunks/{cli-pbc8sk2d.js → cli-mx33m3gs.js} +1 -1
  156. package/dist/chunks/{cli-r83ttew2.js → cli-n5wt59z1.js} +1 -1
  157. package/dist/chunks/{cli-gq5fve62.js → cli-nqvfpxp6.js} +1 -1
  158. package/dist/chunks/{cli-zpcncwrv.js → cli-pgjnzqk4.js} +1 -1
  159. package/dist/chunks/{cli-6pdpyz1a.js → cli-phwbqkv7.js} +1 -1
  160. package/dist/chunks/{cli-57yrpnaq.js → cli-ps5qshk4.js} +1 -1
  161. package/dist/chunks/{cli-4mvvtchx.js → cli-psqvdh1r.js} +1 -1
  162. package/dist/chunks/{cli-gxgdnjfn.js → cli-q0vret0x.js} +1 -1
  163. package/dist/chunks/{cli-zxdnz6vp.js → cli-q2g5mjv6.js} +1 -1
  164. package/dist/chunks/{cli-tq5z9qv3.js → cli-q8zmmp6z.js} +2 -2
  165. package/dist/chunks/{cli-j08dmxw5.js → cli-qpjkqhg2.js} +1 -1
  166. package/dist/chunks/{cli-scaqq0v9.js → cli-qrmc38f8.js} +1 -1
  167. package/dist/chunks/{cli-w1d8n9g3.js → cli-qwx84m9c.js} +1 -1
  168. package/dist/chunks/{cli-s6vr7213.js → cli-r43jhzwm.js} +1 -1
  169. package/dist/chunks/{cli-x70v8rsj.js → cli-rc3w6tqd.js} +2 -2
  170. package/dist/chunks/{cli-7c99j0pt.js → cli-rd5ax7sn.js} +1 -1
  171. package/dist/chunks/{cli-m8fq163z.js → cli-rjy86nps.js} +1 -1
  172. package/dist/chunks/cli-rwh0a2m1.js +3 -0
  173. package/dist/chunks/{cli-3gwqrmcd.js → cli-ry9g546q.js} +1 -1
  174. package/dist/chunks/{cli-8mk2zg4a.js → cli-rz03bav0.js} +1 -1
  175. package/dist/chunks/{cli-66jj9zj3.js → cli-sbm8tsyq.js} +1 -1
  176. package/dist/chunks/{cli-55ntywtj.js → cli-shsgq494.js} +1 -1
  177. package/dist/chunks/{cli-tt9a4124.js → cli-sr25begm.js} +1 -1
  178. package/dist/chunks/{cli-c60c9qvm.js → cli-swrtc7tv.js} +1 -1
  179. package/dist/chunks/{cli-cwbxhdt1.js → cli-sxe9wke0.js} +1 -1
  180. package/dist/chunks/{cli-qm684n63.js → cli-szxfz15b.js} +1 -1
  181. package/dist/chunks/{cli-w52yvzkn.js → cli-t4see9hh.js} +2 -2
  182. package/dist/chunks/cli-t5ddsvmv.js +3 -0
  183. package/dist/chunks/cli-t5yqvdb3.js +3 -0
  184. package/dist/chunks/{cli-wbe1p8n2.js → cli-t7sx6zqn.js} +1 -1
  185. package/dist/chunks/cli-t8ydjjs7.js +3 -0
  186. package/dist/chunks/{cli-3ac555qw.js → cli-tafg3e9w.js} +2 -2
  187. package/dist/chunks/{cli-zjfya500.js → cli-tpjr1pz9.js} +1 -1
  188. package/dist/chunks/{cli-d53fhs6v.js → cli-vb6aa4jk.js} +1 -1
  189. package/dist/chunks/{cli-749tdaqc.js → cli-vfh77r55.js} +1 -1
  190. package/dist/chunks/{cli-jkj867t1.js → cli-vm7dr5aa.js} +2 -2
  191. package/dist/chunks/{cli-k2nh5cby.js → cli-vqne1z50.js} +1 -1
  192. package/dist/chunks/{cli-42kma5r3.js → cli-vtsy70mz.js} +1 -1
  193. package/dist/chunks/{cli-mj03488e.js → cli-vy3e90k9.js} +1 -1
  194. package/dist/chunks/{cli-vkzp66cm.js → cli-wvctks7e.js} +1 -1
  195. package/dist/chunks/{cli-er7z496e.js → cli-wznsj6nb.js} +1 -1
  196. package/dist/chunks/{cli-msgx4pnp.js → cli-x9s7jxq5.js} +1 -1
  197. package/dist/chunks/{cli-grxvgq2n.js → cli-xqqnx8gk.js} +1 -1
  198. package/dist/chunks/{cli-rjerv816.js → cli-yaxs01at.js} +2 -2
  199. package/dist/chunks/{cli-fdya77ch.js → cli-yb5m6jwq.js} +3 -3
  200. package/dist/chunks/{cli-mzcsnm06.js → cli-yfb8bk69.js} +2 -2
  201. package/dist/chunks/{cli-rxb5q8zw.js → cli-yktdhy9p.js} +2 -2
  202. package/dist/chunks/{cli-4a4bb1kf.js → cli-yt4ezhhk.js} +1 -1
  203. package/dist/chunks/{cli-jgn9jprh.js → cli-yxsn8ang.js} +1 -1
  204. package/dist/chunks/{cli-350pymj4.js → cli-z02gsrtd.js} +2 -2
  205. package/dist/chunks/{cli-xmgm2573.js → cli-z2ewnqgr.js} +2 -2
  206. package/dist/chunks/{cli-r9db9mqv.js → cli-zqrzc3qx.js} +1 -1
  207. package/dist/chunks/{cli-wm8qb6j3.js → cli-zwn9x1p2.js} +1 -1
  208. package/dist/chunks/{cli-kq16afrr.js → cli-zxe1a0ey.js} +2 -2
  209. package/dist/chunks/client-qxx2ja27.js +2 -0
  210. package/dist/chunks/color-k1ew8kzn.js +2 -0
  211. package/dist/chunks/commitAttribution-nsa26sdx.js +2 -0
  212. package/dist/chunks/common-7t28qq0q.js +2 -0
  213. package/dist/chunks/{compact-zmvj1pk0.js → compact-kysg5kxd.js} +1 -1
  214. package/dist/chunks/config-d4kj5q8e.js +2 -0
  215. package/dist/chunks/{config-gj0gbg5g.js → config-txzzncm9.js} +1 -1
  216. package/dist/chunks/{context-h1qc69rg.js → context-aat04hqp.js} +1 -1
  217. package/dist/chunks/context-noninteractive-w54t6xnc.js +2 -0
  218. package/dist/chunks/conversation-brecqh0t.js +2 -0
  219. package/dist/chunks/{copy-76r9v46d.js → copy-zpvnnk85.js} +1 -1
  220. package/dist/chunks/cost-5fbyws6x.js +5 -0
  221. package/dist/chunks/createSession-hsp3x7vw.js +2 -0
  222. package/dist/chunks/desktop-7kdmxet0.js +2 -0
  223. package/dist/chunks/detectRepository-9xqead5f.js +2 -0
  224. package/dist/chunks/detection-z3cdks0s.js +2 -0
  225. package/dist/chunks/{devtools-10ba48t9.js → devtools-7jd4m7th.js} +1 -1
  226. package/dist/chunks/{diff-05xxjeqc.js → diff-xaw6ebj0.js} +1 -1
  227. package/dist/chunks/doctor-nbm4z0tx.js +2 -0
  228. package/dist/chunks/{earlyInput-navj6cdn.js → earlyInput-e8zh4d2d.js} +1 -1
  229. package/dist/chunks/{effort-a190c878.js → effort-bj5x7fcg.js} +1 -1
  230. package/dist/chunks/executor-e1744nra.js +2 -0
  231. package/dist/chunks/exit-894g29w2.js +2 -0
  232. package/dist/chunks/{export-ct4sty4d.js → export-tjrkechp.js} +1 -1
  233. package/dist/chunks/extra-usage-noninteractive-577ac873.js +2 -0
  234. package/dist/chunks/extra-usage-tfwmdc7z.js +2 -0
  235. package/dist/chunks/fast-1krm57mn.js +2 -0
  236. package/dist/chunks/feedback-2421cbpm.js +2 -0
  237. package/dist/chunks/{files-qrrrkjke.js → files-n3b22fs2.js} +1 -1
  238. package/dist/chunks/firstPartyEventLogger-1kwwcqdn.js +2 -0
  239. package/dist/chunks/gates-sd1cp8f2.js +2 -0
  240. package/dist/chunks/git-t6e9xdt2.js +2 -0
  241. package/dist/chunks/goal-0sxyk3va.js +2 -0
  242. package/dist/chunks/{growthbook-f7ag30hy.js → growthbook-4hx0kbpq.js} +1 -1
  243. package/dist/chunks/{heapdump-16gnh3zm.js → heapdump-2y7wcy1r.js} +1 -1
  244. package/dist/chunks/{help-rgcakcxe.js → help-a7mc9946.js} +1 -1
  245. package/dist/chunks/{hooks-c7fqwas5.js → hooks-22nm9hn0.js} +1 -1
  246. package/dist/chunks/hooks-tf9v5b0x.js +2 -0
  247. package/dist/chunks/{ide-q83qr9cn.js → ide-9x5zsk63.js} +1 -1
  248. package/dist/chunks/index-p1k4dhfc.js +2 -0
  249. package/dist/chunks/{initReplBridge-zfwxgpsm.js → initReplBridge-xjc6eaan.js} +1 -1
  250. package/dist/chunks/{ink-vkxsn90v.js → ink-9n8bszp5.js} +1 -1
  251. package/dist/chunks/{insights-4fwap4e5.js → insights-n7k1ty4n.js} +1 -1
  252. package/dist/chunks/{install-github-app-djzea7r4.js → install-github-app-zdsmjft8.js} +1 -1
  253. package/dist/chunks/{install-7nxzmgp5.js → install-rhzcmymh.js} +1 -1
  254. package/dist/chunks/install-slack-app-vhfe2dsf.js +2 -0
  255. package/dist/chunks/{instrumentation-223qqr23.js → instrumentation-5jjvsvke.js} +1 -1
  256. package/dist/chunks/keybindings-tqnmw7ng.js +3 -0
  257. package/dist/chunks/loadAgentsDir-j7pntb5v.js +2 -0
  258. package/dist/chunks/loadPluginHooks-sta7ra57.js +2 -0
  259. package/dist/chunks/login-j7x2fjw8.js +2 -0
  260. package/dist/chunks/logout-53bvwba1.js +2 -0
  261. package/dist/chunks/{main-0b8hyp8h.js → main-07p6q3f9.js} +13 -13
  262. package/dist/chunks/{mcp-fn4yrf5y.js → mcp-3mjagnnt.js} +1 -1
  263. package/dist/chunks/{mcp-9enw5a8j.js → mcp-yqhzespv.js} +1 -1
  264. package/dist/chunks/{mcp-yymqpmv6.js → mcp-yrt7dbxp.js} +3 -3
  265. package/dist/chunks/{mcpServer-85gt8ypc.js → mcpServer-f90a93nt.js} +1 -1
  266. package/dist/chunks/{mcpServer-60jg9v58.js → mcpServer-v1dy489g.js} +1 -1
  267. package/dist/chunks/{memory-kam5z1cw.js → memory-mdwb22wh.js} +1 -1
  268. package/dist/chunks/{mobile-7zsgawnb.js → mobile-j4jwvavn.js} +1 -1
  269. package/dist/chunks/{model-03987182.js → model-hz3nn362.js} +1 -1
  270. package/dist/chunks/{model-wbxx5kcd.js → model-tf1ne2j9.js} +1 -1
  271. package/dist/chunks/{oauth-y0p2y1w5.js → oauth-1b0qpxz4.js} +1 -1
  272. package/dist/chunks/{output-style-x148mzhn.js → output-style-t39s3jqx.js} +1 -1
  273. package/dist/chunks/parser-8venanpw.js +2 -0
  274. package/dist/chunks/{passes-jrmjk5zk.js → passes-s3fqswrg.js} +1 -1
  275. package/dist/chunks/{permissions-karmgb0m.js → permissions-a050zfqv.js} +1 -1
  276. package/dist/chunks/plan-gjaybyvb.js +2 -0
  277. package/dist/chunks/plugin-trf2388p.js +2 -0
  278. package/dist/chunks/pluginStartupCheck-wxmc7h98.js +2 -0
  279. package/dist/chunks/{plugins-vvf897b4.js → plugins-4py04yzf.js} +2 -2
  280. package/dist/chunks/{preauthorizedConfig-p02f23jb.js → preauthorizedConfig-hmxcgb8e.js} +1 -1
  281. package/dist/chunks/{print-krwpbp2j.js → print-pmzxgktf.js} +4 -4
  282. package/dist/chunks/privacy-settings-b2rz35r5.js +2 -0
  283. package/dist/chunks/process-n5355p53.js +2 -0
  284. package/dist/chunks/{processBashCommand-8fqgv2ec.js → processBashCommand-zkztsgn4.js} +1 -1
  285. package/dist/chunks/{processSlashCommand-q32wy80b.js → processSlashCommand-mfh1h592.js} +1 -1
  286. package/dist/chunks/prompt-2jyjhkwg.js +2 -0
  287. package/dist/chunks/prompt-b34a0h5z.js +2 -0
  288. package/dist/chunks/provider-prompt-qe4s2yzh.js +2 -0
  289. package/dist/chunks/{rate-limit-options-rd4rjfv5.js → rate-limit-options-kd432dap.js} +1 -1
  290. package/dist/chunks/registry-d7cd5dqg.js +2 -0
  291. package/dist/chunks/release-notes-rwgbn4pp.js +6 -0
  292. package/dist/chunks/reload-plugins-9axdwaaj.js +3 -0
  293. package/dist/chunks/{remote-env-nn9ngr99.js → remote-env-rg4k5em5.js} +1 -1
  294. package/dist/chunks/{remoteBridgeCore-cg7qd8m4.js → remoteBridgeCore-t980tt3v.js} +1 -1
  295. package/dist/chunks/rename-xap3rpbv.js +2 -0
  296. package/dist/chunks/{resume-4rvj8jbz.js → resume-3tc40yn9.js} +1 -1
  297. package/dist/chunks/{rewind-r4g5njsg.js → rewind-b6vg7dxs.js} +1 -1
  298. package/dist/chunks/sandbox-adapter-1z8xktva.js +2 -0
  299. package/dist/chunks/{sandbox-toggle-620bkz9q.js → sandbox-toggle-eke03mr8.js} +1 -1
  300. package/dist/chunks/{session-5vm1vwv1.js → session-53f3eza5.js} +1 -1
  301. package/dist/chunks/sessionFileAccessHooks-xscvsvqt.js +2 -0
  302. package/dist/chunks/{sessionStorage-ffkhmn5q.js → sessionStorage-rb63e8bn.js} +1 -1
  303. package/dist/chunks/settings-hp0ksjn9.js +2 -0
  304. package/dist/chunks/{setup-vegs56f5.js → setup-gravfzvg.js} +1 -1
  305. package/dist/chunks/setup-ssq8b1e6.js +2 -0
  306. package/dist/chunks/{setup-pf09nfsj.js → setup-z05dsr8q.js} +2 -2
  307. package/dist/chunks/sinks-agafqaxj.js +2 -0
  308. package/dist/chunks/{skills-evga8f7n.js → skills-41mfq71n.js} +1 -1
  309. package/dist/chunks/startupProfiler-wmf8nvfd.js +2 -0
  310. package/dist/chunks/state-rhxyy4qm.js +2 -0
  311. package/dist/chunks/{stats-mgqf6r7c.js → stats-7qg84dw1.js} +1 -1
  312. package/dist/chunks/status-sran2y9h.js +2 -0
  313. package/dist/chunks/stickers-hythmrsd.js +2 -0
  314. package/dist/chunks/subprocessEnv-b12dkzky.js +2 -0
  315. package/dist/chunks/{systemPromptSections-07y2z2wn.js → systemPromptSections-jxxyhnxe.js} +1 -1
  316. package/dist/chunks/{tag-gd73kstd.js → tag-58ndeaa9.js} +1 -1
  317. package/dist/chunks/tasks-52g28x72.js +2 -0
  318. package/dist/chunks/{teamHelpers-8ykc4bxa.js → teamHelpers-rxt9rvmd.js} +1 -1
  319. package/dist/chunks/teammateModeSnapshot-2782d4w9.js +2 -0
  320. package/dist/chunks/teleport-8gjys6yn.js +2 -0
  321. package/dist/chunks/terminalSetup-bbftxeqk.js +2 -0
  322. package/dist/chunks/theme-b38te5rz.js +2 -0
  323. package/dist/chunks/thinkback-05a9q24j.js +2 -0
  324. package/dist/chunks/thinkback-play-1nbagfm5.js +2 -0
  325. package/dist/chunks/toolSearch-7rnke366.js +2 -0
  326. package/dist/chunks/trustedDevice-2dn4981h.js +2 -0
  327. package/dist/chunks/{ultrareviewCommand-j23bjbf8.js → ultrareviewCommand-qwnsjdez.js} +1 -1
  328. package/dist/chunks/{update-w8wdxh3m.js → update-ney1krzn.js} +1 -1
  329. package/dist/chunks/upgrade-zxxxfq8c.js +2 -0
  330. package/dist/chunks/{upstreamproxy-x405ef9p.js → upstreamproxy-34wva0r5.js} +1 -1
  331. package/dist/chunks/usage-82ghrfb3.js +2 -0
  332. package/dist/chunks/util-xm9cs164.js +2 -0
  333. package/dist/chunks/utils-zs0ft181.js +2 -0
  334. package/dist/chunks/vim-6gxdrp1k.js +2 -0
  335. package/dist/chunks/worktree-xjxz4ndt.js +2 -0
  336. package/dist/chunks/worktreeModeEnabled-8ndm5yfs.js +2 -0
  337. package/dist/cli.js +1 -1
  338. package/package.json +1 -1
  339. package/preload.ts +24 -2
  340. package/dist/chunks/App-s5ex5j86.js +0 -2
  341. package/dist/chunks/ApproveApiKey-b4z6h2gn.js +0 -2
  342. package/dist/chunks/BypassPermissionsModeDialog-jbg97eja.js +0 -2
  343. package/dist/chunks/ClaudeMdExternalIncludesDialog-gqmed78y.js +0 -2
  344. package/dist/chunks/ConsoleOAuthFlow-yh72vs8j.js +0 -2
  345. package/dist/chunks/Doctor-k08ggw2j.js +0 -2
  346. package/dist/chunks/Grove-tkkskg8n.js +0 -2
  347. package/dist/chunks/InvalidSettingsDialog-tnd5hymg.js +0 -2
  348. package/dist/chunks/REPL-hjjz80kq.js +0 -2
  349. package/dist/chunks/ToolSearchTool-w4t61c7d.js +0 -2
  350. package/dist/chunks/TungstenTool-rv96z549.js +0 -2
  351. package/dist/chunks/agents-3exybgtb.js +0 -4
  352. package/dist/chunks/ant-claude-for-chrome-mcp-712xg07f.js +0 -2
  353. package/dist/chunks/api-z8svc3xt.js +0 -2
  354. package/dist/chunks/asciicast-vzd7qjbb.js +0 -2
  355. package/dist/chunks/auth-gbyfq0g2.js +0 -2
  356. package/dist/chunks/backgroundHousekeeping-m8gthtkh.js +0 -2
  357. package/dist/chunks/caches-fbggdeq7.js +0 -2
  358. package/dist/chunks/clear-fwad6zxy.js +0 -2
  359. package/dist/chunks/cli-55jdp9ky.js +0 -3
  360. package/dist/chunks/cli-78apjp3t.js +0 -3
  361. package/dist/chunks/cli-8hxz2qs6.js +0 -3
  362. package/dist/chunks/cli-95wg48h9.js +0 -3
  363. package/dist/chunks/cli-edkqs0ge.js +0 -3
  364. package/dist/chunks/cli-fakdskp6.js +0 -3
  365. package/dist/chunks/cli-h4dspaac.js +0 -3
  366. package/dist/chunks/cli-przq3zk6.js +0 -3
  367. package/dist/chunks/client-dkpgx025.js +0 -2
  368. package/dist/chunks/color-zrm6r755.js +0 -2
  369. package/dist/chunks/commitAttribution-3y6pessz.js +0 -2
  370. package/dist/chunks/common-0bee37at.js +0 -2
  371. package/dist/chunks/config-hbq35b68.js +0 -2
  372. package/dist/chunks/context-noninteractive-7wbe6qvd.js +0 -2
  373. package/dist/chunks/conversation-fwnfp0p5.js +0 -2
  374. package/dist/chunks/cost-56r5xxqy.js +0 -5
  375. package/dist/chunks/createSession-m5y8fjy4.js +0 -2
  376. package/dist/chunks/desktop-z3jqgnw7.js +0 -2
  377. package/dist/chunks/detectRepository-w6wawmmg.js +0 -2
  378. package/dist/chunks/detection-1yb2c7hh.js +0 -2
  379. package/dist/chunks/doctor-hgwjdraj.js +0 -2
  380. package/dist/chunks/executor-s42mdmqs.js +0 -2
  381. package/dist/chunks/exit-kyrjy6hb.js +0 -2
  382. package/dist/chunks/extra-usage-noninteractive-byts9mme.js +0 -2
  383. package/dist/chunks/extra-usage-xh1mkrca.js +0 -2
  384. package/dist/chunks/fast-g4aa49jf.js +0 -2
  385. package/dist/chunks/feedback-m5r66qd5.js +0 -2
  386. package/dist/chunks/firstPartyEventLogger-mthxtmgc.js +0 -2
  387. package/dist/chunks/gates-yhakv4vb.js +0 -2
  388. package/dist/chunks/git-c39vd9dm.js +0 -2
  389. package/dist/chunks/goal-24dr7fwz.js +0 -2
  390. package/dist/chunks/hooks-8dh43zmv.js +0 -2
  391. package/dist/chunks/index-v875zpde.js +0 -2
  392. package/dist/chunks/install-slack-app-3rde0k08.js +0 -2
  393. package/dist/chunks/keybindings-6t5f69wx.js +0 -3
  394. package/dist/chunks/loadAgentsDir-f8shfnw3.js +0 -2
  395. package/dist/chunks/loadPluginHooks-mdwjrjtp.js +0 -2
  396. package/dist/chunks/login-34j3xdr9.js +0 -2
  397. package/dist/chunks/logout-yew8mymc.js +0 -2
  398. package/dist/chunks/parser-4y4b0e6b.js +0 -2
  399. package/dist/chunks/plan-w0beh9bh.js +0 -2
  400. package/dist/chunks/plugin-6nwptn3s.js +0 -2
  401. package/dist/chunks/pluginStartupCheck-0nzv1ae9.js +0 -2
  402. package/dist/chunks/privacy-settings-m0mfykh0.js +0 -2
  403. package/dist/chunks/process-26nny2p0.js +0 -2
  404. package/dist/chunks/prompt-gw1e1gef.js +0 -2
  405. package/dist/chunks/prompt-xgw2hxrc.js +0 -2
  406. package/dist/chunks/provider-prompt-s26vatcw.js +0 -2
  407. package/dist/chunks/registry-fp7x9ekd.js +0 -2
  408. package/dist/chunks/release-notes-76y1r2s1.js +0 -6
  409. package/dist/chunks/reload-plugins-z0fepkva.js +0 -3
  410. package/dist/chunks/rename-fdjzyjar.js +0 -2
  411. package/dist/chunks/sandbox-adapter-craea9vm.js +0 -2
  412. package/dist/chunks/sessionFileAccessHooks-5jbvwabj.js +0 -2
  413. package/dist/chunks/settings-s2bcajs6.js +0 -2
  414. package/dist/chunks/setup-fwcttwbm.js +0 -2
  415. package/dist/chunks/sinks-wd4ccgbf.js +0 -2
  416. package/dist/chunks/startupProfiler-x5zbs2j7.js +0 -2
  417. package/dist/chunks/state-qpmfrvsv.js +0 -2
  418. package/dist/chunks/status-78yks3jw.js +0 -2
  419. package/dist/chunks/stickers-bdp8w2gr.js +0 -2
  420. package/dist/chunks/subprocessEnv-s797f06r.js +0 -2
  421. package/dist/chunks/tasks-63qaca0z.js +0 -2
  422. package/dist/chunks/teammateModeSnapshot-ae9r29dy.js +0 -2
  423. package/dist/chunks/teleport-es58k4xz.js +0 -2
  424. package/dist/chunks/terminalSetup-gyh5z5e2.js +0 -2
  425. package/dist/chunks/theme-qrhbaht6.js +0 -2
  426. package/dist/chunks/thinkback-5bs7ezv5.js +0 -2
  427. package/dist/chunks/thinkback-play-1dy160y5.js +0 -2
  428. package/dist/chunks/toolSearch-6cv284b7.js +0 -2
  429. package/dist/chunks/trustedDevice-77ketbgg.js +0 -2
  430. package/dist/chunks/upgrade-nft7c1yk.js +0 -2
  431. package/dist/chunks/usage-s5qgc615.js +0 -2
  432. package/dist/chunks/util-1geb93kp.js +0 -2
  433. package/dist/chunks/utils-6sb44pg8.js +0 -2
  434. package/dist/chunks/vim-kq91w44a.js +0 -2
  435. package/dist/chunks/worktree-0af6b1mt.js +0 -2
  436. package/dist/chunks/worktreeModeEnabled-ea6wb7aj.js +0 -2
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{vg as I,xg as Gj}from"./cli-tckzkegq.js";import{aM as N,cM as Zj}from"./cli-xfsqvp8r.js";import{$M as d,ZM as L,_M as w,aN as p,dN as P,hN as Xj}from"./cli-8qd16mt4.js";import{Q2 as c,Q3 as Wj,a3 as Rj,u3 as g,x3 as H}from"./cli-msmzt4c3.js";import{c5 as $,g5 as Jj}from"./cli-mb1qrqw1.js";import{H7 as y,I7 as Oj}from"./cli-p0vh69b9.js";import{k9 as b,l9 as Qj}from"./cli-jj93qmmc.js";import{$9 as A,b_ as n,d_ as D,h_ as qj,v_ as R,y_ as zj}from"./cli-hke6r0q8.js";import{F_ as u,I_ as v,J_ as B,S_ as jj}from"./cli-tq5z9qv3.js";import{Oba as _,Taa as E,Uaa as F,bda as e}from"./cli-3ac555qw.js";import{fda as U}from"./cli-w1d8n9g3.js";import{readdir as V}from"fs/promises";import{join as o}from"path";function t(){return process.env.USER_TYPE==="ant"?[Y,s,r]:[Y]}async function a(q,j){if(q.length===0)return j?.("[Claude in Chrome] No browser paths to check"),{isInstalled:!1,browser:null};let G=t();for(let{browser:z,path:O}of q){let J=[];try{J=await V(O,{withFileTypes:!0})}catch(Q){if(A(Q))continue;throw Q}let W=J.filter((Q)=>Q.isDirectory()).filter((Q)=>Q.name==="Default"||Q.name.startsWith("Profile ")).map((Q)=>Q.name);if(W.length>0)j?.(`[Claude in Chrome] Found ${z} profiles: ${W.join(", ")}`);for(let Q of W)for(let Z of G){let i=o(O,Q,"Extensions",Z);try{return await V(i),j?.(`[Claude in Chrome] Extension ${Z} found in ${z} ${Q}`),{isInstalled:!0,browser:z}}catch{}}}return j?.("[Claude in Chrome] Extension not found in any browser"),{isInstalled:!1,browser:null}}async function K(q,j){return(await a(q,j)).isInstalled}var Y="fcoeoabgfenejglbffodgkkbkcdhcgfn",s="dihbgbndebgnbjfmelmegjepbnkhlgni",r="dngcpimnedloihjnnfngkgjoidhnaolf";var M=U(()=>{n()});import{chmod as $j,mkdir as f,readFile as m,writeFile as h}from"fs/promises";import{homedir as kj}from"os";import{join as X}from"path";import{fileURLToPath as Hj}from"url";function pj(q){if(E()&&q!==!0)return!1;if(q===!0)return!0;if(q===!1)return!1;if(v(process.env.CLAUDE_CODE_ENABLE_CFC))return!0;if(B(process.env.CLAUDE_CODE_ENABLE_CFC))return!1;let j=H();if(j.claudeInChromeDefaultEnabled!==void 0)return j.claudeInChromeDefaultEnabled;return!1}function Pj(){if(k!==void 0)return k;return k=F()&&Vj()&&(process.env.USER_TYPE==="ant"||c("tengu_chrome_auto_enable",!1)),k}function fj(){let q=b(),j=I.map((O)=>`mcp__claude-in-chrome__${O.name}`),G={};if(_())G.CLAUDE_CHROME_PERMISSION_MODE="skip_all_permission_checks";let z=Object.keys(G).length>0;if(q){let O=`"${process.execPath}" --chrome-native-host`;return C(O).then((J)=>x(J)).catch((J)=>R(`[Claude in Chrome] Failed to install native host: ${J}`,{level:"error"})),{mcpConfig:{[L]:{type:"stdio",command:process.execPath,args:["--claude-in-chrome-mcp"],scope:"dynamic",...z&&{env:G}}},allowedTools:j,systemPrompt:N()}}else{let O=Hj(import.meta.url),J=X(O,".."),W=X(J,"cli.js");return C(`"${process.execPath}" "${W}" --chrome-native-host`).then((Z)=>x(Z)).catch((Z)=>R(`[Claude in Chrome] Failed to install native host: ${Z}`,{level:"error"})),{mcpConfig:{[L]:{type:"stdio",command:process.execPath,args:[`${W}`,"--claude-in-chrome-mcp"],scope:"dynamic",...z&&{env:G}}},allowedTools:j,systemPrompt:N()}}}function Nj(){if($()==="windows"){let j=kj(),G=process.env.APPDATA||X(j,"AppData","Local");return[X(G,"Claude Code","ChromeNativeHost")]}return d().map(({path:j})=>j)}async function x(q){let j=Nj();if(j.length===0)throw Error("Claude in Chrome Native Host not supported on this platform");let G={name:S,description:"Claude Code Browser Extension Native Host",path:q,type:"stdio",allowed_origins:["chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/",...process.env.USER_TYPE==="ant"?["chrome-extension://dihbgbndebgnbjfmelmegjepbnkhlgni/","chrome-extension://dngcpimnedloihjnnfngkgjoidhnaolf/"]:[]]},z=D(G,null,2),O=!1;for(let J of j){let W=X(J,T);if(await m(W,"utf-8").catch(()=>null)===z)continue;try{await f(J,{recursive:!0}),await h(W,z),R(`[Claude in Chrome] Installed native host manifest at: ${W}`),O=!0}catch(Z){R(`[Claude in Chrome] Failed to install manifest at ${W}: ${Z}`)}}if($()==="windows"){let J=X(j[0],T);Sj(J)}if(O)l().then((J)=>{if(J)R("[Claude in Chrome] First-time install detected, opening reconnect page in browser"),P(Lj);else R("[Claude in Chrome] First-time install detected, but extension not installed, skipping reconnect")})}function Sj(q){let j=p();for(let{browser:G,key:z}of j){let O=`${z}\\${S}`;y("reg",["add",O,"/ve","/t","REG_SZ","/d",q,"/f"]).then((J)=>{if(J.code===0)R(`[Claude in Chrome] Registered native host for ${G} in Windows registry: ${O}`);else R(`[Claude in Chrome] Failed to register native host for ${G} in Windows registry: ${J.stderr}`)})}}async function C(q){let j=$(),G=X(u(),"chrome"),z=j==="windows"?X(G,"chrome-native-host.bat"):X(G,"chrome-native-host"),O=j==="windows"?`@echo off
2
+ import{vg as I,xg as Gj}from"./cli-chvks6bg.js";import{aM as N,cM as Zj}from"./cli-4pwyex04.js";import{$M as d,ZM as L,_M as w,aN as p,dN as P,hN as Xj}from"./cli-33tchr20.js";import{Q2 as c,Q3 as Wj,a3 as Rj,u3 as g,x3 as H}from"./cli-192xnkcx.js";import{c5 as $,g5 as Jj}from"./cli-6qt2xm18.js";import{J7 as y,K7 as Oj}from"./cli-7wxv39ry.js";import{m9 as b,n9 as Qj}from"./cli-5ajcy93q.js";import{A_ as zj,b_ as A,d_ as n,f_ as D,j_ as qj,x_ as R}from"./cli-awb77t95.js";import{H_ as u,K_ as v,L_ as B,U_ as jj}from"./cli-q8zmmp6z.js";import{Qba as _,Vaa as E,Waa as F,dda as e}from"./cli-tafg3e9w.js";import{hda as U}from"./cli-qwx84m9c.js";import{readdir as V}from"fs/promises";import{join as o}from"path";function t(){return process.env.USER_TYPE==="ant"?[Y,s,r]:[Y]}async function a(q,j){if(q.length===0)return j?.("[Claude in Chrome] No browser paths to check"),{isInstalled:!1,browser:null};let G=t();for(let{browser:z,path:O}of q){let J=[];try{J=await V(O,{withFileTypes:!0})}catch(Q){if(A(Q))continue;throw Q}let W=J.filter((Q)=>Q.isDirectory()).filter((Q)=>Q.name==="Default"||Q.name.startsWith("Profile ")).map((Q)=>Q.name);if(W.length>0)j?.(`[Claude in Chrome] Found ${z} profiles: ${W.join(", ")}`);for(let Q of W)for(let Z of G){let i=o(O,Q,"Extensions",Z);try{return await V(i),j?.(`[Claude in Chrome] Extension ${Z} found in ${z} ${Q}`),{isInstalled:!0,browser:z}}catch{}}}return j?.("[Claude in Chrome] Extension not found in any browser"),{isInstalled:!1,browser:null}}async function K(q,j){return(await a(q,j)).isInstalled}var Y="fcoeoabgfenejglbffodgkkbkcdhcgfn",s="dihbgbndebgnbjfmelmegjepbnkhlgni",r="dngcpimnedloihjnnfngkgjoidhnaolf";var M=U(()=>{n()});import{chmod as $j,mkdir as f,readFile as m,writeFile as h}from"fs/promises";import{homedir as kj}from"os";import{join as X}from"path";import{fileURLToPath as Hj}from"url";function pj(q){if(E()&&q!==!0)return!1;if(q===!0)return!0;if(q===!1)return!1;if(v(process.env.CLAUDE_CODE_ENABLE_CFC))return!0;if(B(process.env.CLAUDE_CODE_ENABLE_CFC))return!1;let j=H();if(j.claudeInChromeDefaultEnabled!==void 0)return j.claudeInChromeDefaultEnabled;return!1}function Pj(){if(k!==void 0)return k;return k=F()&&Vj()&&(process.env.USER_TYPE==="ant"||c("tengu_chrome_auto_enable",!1)),k}function fj(){let q=b(),j=I.map((O)=>`mcp__claude-in-chrome__${O.name}`),G={};if(_())G.CLAUDE_CHROME_PERMISSION_MODE="skip_all_permission_checks";let z=Object.keys(G).length>0;if(q){let O=`"${process.execPath}" --chrome-native-host`;return C(O).then((J)=>x(J)).catch((J)=>R(`[Claude in Chrome] Failed to install native host: ${J}`,{level:"error"})),{mcpConfig:{[L]:{type:"stdio",command:process.execPath,args:["--claude-in-chrome-mcp"],scope:"dynamic",...z&&{env:G}}},allowedTools:j,systemPrompt:N()}}else{let O=Hj(import.meta.url),J=X(O,".."),W=X(J,"cli.js");return C(`"${process.execPath}" "${W}" --chrome-native-host`).then((Z)=>x(Z)).catch((Z)=>R(`[Claude in Chrome] Failed to install native host: ${Z}`,{level:"error"})),{mcpConfig:{[L]:{type:"stdio",command:process.execPath,args:[`${W}`,"--claude-in-chrome-mcp"],scope:"dynamic",...z&&{env:G}}},allowedTools:j,systemPrompt:N()}}}function Nj(){if($()==="windows"){let j=kj(),G=process.env.APPDATA||X(j,"AppData","Local");return[X(G,"Claude Code","ChromeNativeHost")]}return d().map(({path:j})=>j)}async function x(q){let j=Nj();if(j.length===0)throw Error("Claude in Chrome Native Host not supported on this platform");let G={name:S,description:"Claude Code Browser Extension Native Host",path:q,type:"stdio",allowed_origins:["chrome-extension://fcoeoabgfenejglbffodgkkbkcdhcgfn/",...process.env.USER_TYPE==="ant"?["chrome-extension://dihbgbndebgnbjfmelmegjepbnkhlgni/","chrome-extension://dngcpimnedloihjnnfngkgjoidhnaolf/"]:[]]},z=D(G,null,2),O=!1;for(let J of j){let W=X(J,T);if(await m(W,"utf-8").catch(()=>null)===z)continue;try{await f(J,{recursive:!0}),await h(W,z),R(`[Claude in Chrome] Installed native host manifest at: ${W}`),O=!0}catch(Z){R(`[Claude in Chrome] Failed to install manifest at ${W}: ${Z}`)}}if($()==="windows"){let J=X(j[0],T);Sj(J)}if(O)l().then((J)=>{if(J)R("[Claude in Chrome] First-time install detected, opening reconnect page in browser"),P(Lj);else R("[Claude in Chrome] First-time install detected, but extension not installed, skipping reconnect")})}function Sj(q){let j=p();for(let{browser:G,key:z}of j){let O=`${z}\\${S}`;y("reg",["add",O,"/ve","/t","REG_SZ","/d",q,"/f"]).then((J)=>{if(J.code===0)R(`[Claude in Chrome] Registered native host for ${G} in Windows registry: ${O}`);else R(`[Claude in Chrome] Failed to register native host for ${G} in Windows registry: ${J.stderr}`)})}}async function C(q){let j=$(),G=X(u(),"chrome"),z=j==="windows"?X(G,"chrome-native-host.bat"):X(G,"chrome-native-host"),O=j==="windows"?`@echo off
3
3
  REM Chrome native host wrapper script
4
4
  REM Generated by Claude Code - do not edit manually
5
5
  ${q}
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{Id as j,Jd as E}from"./cli-q46epwyh.js";import{Ch as W,Fh as v,bD as X,dD as Y,mD as Z,oD as w,sD as _,vD as $,zD as f}from"./cli-me4e2p3e.js";import{F3 as V,Q3 as N,eV as S,rV as A}from"./cli-msmzt4c3.js";import{E8 as Q,J8 as T}from"./cli-4ewb3q42.js";import{X9 as L,b_ as K,v_ as B,y_ as R}from"./cli-hke6r0q8.js";import{fda as y}from"./cli-w1d8n9g3.js";function d(q){if(J=q,G!==null&&G.length>0)q(G),G=null;return()=>{J=null}}async function C(){let q=await Y(),D=X(),x=new Set;for(let[z,h]of Object.entries(q)){let F=D[z]?.autoUpdate;if(F!==void 0?F:S(z,h))x.add(z.toLowerCase())}return x}async function M(q,D){let x=!1;for(let{scope:z}of D)try{let h=await j(q,z);if(h.success&&!h.alreadyUpToDate)x=!0,B(`Plugin autoupdate: updated ${q} from ${h.oldVersion} to ${h.newVersion}`);else if(!h.alreadyUpToDate)B(`Plugin autoupdate: failed to update ${q}: ${h.message}`,{level:"warn"})}catch(h){B(`Plugin autoupdate: error updating ${q}: ${L(h)}`,{level:"warn"})}return x?q:null}async function P(q){let D=_(),x=Object.keys(D.plugins);if(x.length===0)return[];return(await Promise.allSettled(x.map(async(h)=>{let{marketplace:F}=W(h);if(!F||!q.has(F.toLowerCase()))return null;let H=D.plugins[h];if(!H||H.length===0)return null;let O=H.filter($);if(O.length===0)return null;return M(h,O)}))).filter((h)=>h.status==="fulfilled"&&h.value!==null).map((h)=>h.value)}async function m(q){return P(q)}function t(){(async()=>{if(V()){B("Plugin autoupdate: skipped (auto-updater disabled)");return}try{let q=await C();if(q.size===0)return;let x=(await Promise.allSettled(Array.from(q).map(async(h)=>{try{await Z(h,void 0,{disableCredentialHelper:!0})}catch(F){B(`Plugin autoupdate: failed to refresh marketplace ${h}: ${L(F)}`,{level:"warn"})}}))).filter((h)=>h.status==="rejected");if(x.length>0)B(`Plugin autoupdate: ${x.length} marketplace refresh(es) failed`,{level:"warn"});B("Plugin autoupdate: checking installed plugins");let z=await m(q);if(z.length>0)if(J)J(z);else G=z}catch(q){Q(q)}})()}var J=null,G=null;var U=y(()=>{E();N();R();K();T();f();w();v();A()});
2
+ import{Id as j,Jd as E}from"./cli-e3q6b1cv.js";import{Ch as W,Fh as v,bD as X,dD as Y,mD as Z,oD as w,sD as _,vD as $,zD as f}from"./cli-b3k8arn1.js";import{F3 as V,Q3 as N,eV as S,rV as A}from"./cli-192xnkcx.js";import{G8 as Q,L8 as T}from"./cli-8kpqq0ea.js";import{A_ as R,Z9 as L,d_ as K,x_ as B}from"./cli-awb77t95.js";import{hda as y}from"./cli-qwx84m9c.js";function d(q){if(J=q,G!==null&&G.length>0)q(G),G=null;return()=>{J=null}}async function C(){let q=await Y(),D=X(),x=new Set;for(let[z,h]of Object.entries(q)){let F=D[z]?.autoUpdate;if(F!==void 0?F:S(z,h))x.add(z.toLowerCase())}return x}async function M(q,D){let x=!1;for(let{scope:z}of D)try{let h=await j(q,z);if(h.success&&!h.alreadyUpToDate)x=!0,B(`Plugin autoupdate: updated ${q} from ${h.oldVersion} to ${h.newVersion}`);else if(!h.alreadyUpToDate)B(`Plugin autoupdate: failed to update ${q}: ${h.message}`,{level:"warn"})}catch(h){B(`Plugin autoupdate: error updating ${q}: ${L(h)}`,{level:"warn"})}return x?q:null}async function P(q){let D=_(),x=Object.keys(D.plugins);if(x.length===0)return[];return(await Promise.allSettled(x.map(async(h)=>{let{marketplace:F}=W(h);if(!F||!q.has(F.toLowerCase()))return null;let H=D.plugins[h];if(!H||H.length===0)return null;let O=H.filter($);if(O.length===0)return null;return M(h,O)}))).filter((h)=>h.status==="fulfilled"&&h.value!==null).map((h)=>h.value)}async function m(q){return P(q)}function t(){(async()=>{if(V()){B("Plugin autoupdate: skipped (auto-updater disabled)");return}try{let q=await C();if(q.size===0)return;let x=(await Promise.allSettled(Array.from(q).map(async(h)=>{try{await Z(h,void 0,{disableCredentialHelper:!0})}catch(F){B(`Plugin autoupdate: failed to refresh marketplace ${h}: ${L(F)}`,{level:"warn"})}}))).filter((h)=>h.status==="rejected");if(x.length>0)B(`Plugin autoupdate: ${x.length} marketplace refresh(es) failed`,{level:"warn"});B("Plugin autoupdate: checking installed plugins");let z=await m(q);if(z.length>0)if(J)J(z);else G=z}catch(q){Q(q)}})()}var J=null,G=null;var U=y(()=>{E();N();R();K();T();f();w();v();A()});
3
3
  export{d as ud,P as vd,t as wd,U as xd};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{ZJ as TJ,bK as WV,lh as DJ,nh as uJ,qJ as FJ,rh as IJ,sh as BJ,th as hJ}from"./cli-me4e2p3e.js";import{EW as WJ,NW as mJ,Q3 as gJ,x3 as NJ}from"./cli-msmzt4c3.js";import{J4 as qJ,O4 as kJ}from"./cli-fghyxar5.js";import{A7 as fJ,b7 as VJ,d7 as p}from"./cli-fdya77ch.js";import{H7 as c,I7 as PJ}from"./cli-p0vh69b9.js";import{L7 as j,M7 as yJ}from"./cli-rvad3yhg.js";import{E8 as L,J8 as bJ}from"./cli-4ewb3q42.js";import{Y8 as f,Z8 as LJ}from"./cli-t9jht3kb.js";import{X9 as e,b_ as wJ,l_ as JJ,p_ as zJ,v_ as Q,y_ as SJ}from"./cli-hke6r0q8.js";import{c$ as AJ,d$ as CJ}from"./cli-3ac555qw.js";import{fda as XJ}from"./cli-w1d8n9g3.js";class d{paths=[];lowerPaths=[];charBits=new Int32Array(0);pathLens=new Uint16Array(0);topLevelCache=null;readyCount=0;loadFromFileList(J){let W=new Set,Z=[];for(let V of J)if(V.length>0&&!W.has(V))W.add(V),Z.push(V);this.buildIndex(Z)}loadFromFileListAsync(J){let W=()=>{},Z=new Promise((Y)=>{W=Y}),V=this.buildAsync(J,W);return{queryable:Z,done:V}}async buildAsync(J,W){let Z=new Set,V=[],Y=performance.now();for(let $=0;$<J.length;$++){let _=J[$];if(_.length>0&&!Z.has(_))Z.add(_),V.push(_);if(($&255)===255&&performance.now()-Y>4)await y(),Y=performance.now()}this.resetArrays(V),Y=performance.now();let H=!0;for(let $=0;$<V.length;$++)if(this.indexPath($),($&255)===255&&performance.now()-Y>4){if(this.readyCount=$+1,H)W(),H=!1;await y(),Y=performance.now()}this.readyCount=V.length,W()}buildIndex(J){this.resetArrays(J);for(let W=0;W<J.length;W++)this.indexPath(W);this.readyCount=J.length}resetArrays(J){let W=J.length;this.paths=J,this.lowerPaths=Array(W),this.charBits=new Int32Array(W),this.pathLens=new Uint16Array(W),this.readyCount=0,this.topLevelCache=RJ(J,100)}indexPath(J){let W=this.paths[J].toLowerCase();this.lowerPaths[J]=W;let Z=W.length;this.pathLens[J]=Z;let V=0;for(let Y=0;Y<Z;Y++){let H=W.charCodeAt(Y);if(H>=97&&H<=122)V|=1<<H-97}this.charBits[J]=V}search(J,W){if(W<=0)return[];if(J.length===0){if(this.topLevelCache)return this.topLevelCache.slice(0,W);return[]}let Z=J!==J.toLowerCase(),V=Z?J:J.toLowerCase(),Y=Math.min(V.length,64),H=Array(Y),$=0;for(let M=0;M<Y;M++){let B=V.charAt(M);H[M]=B;let E=B.charCodeAt(0);if(E>=97&&E<=122)$|=1<<E-97}let _=Y*24+8+32,X=[],N=-1/0,{paths:D,lowerPaths:q,charBits:x,pathLens:U,readyCount:m}=this;J:for(let M=0;M<m;M++){if((x[M]&$)!==$)continue;let B=Z?D[M]:q[M],E=B.indexOf(H[0]);if(E===-1)continue;b[0]=E;let R=0,g=0,u=E;for(let A=1;A<Y;A++){if(E=B.indexOf(H[A],u+1),E===-1)continue J;b[A]=E;let F=E-u-1;if(F===0)g+=4;else R+=3+F*1;u=E}if(X.length===W&&_+g-R<=N)continue;let S=D[M],jJ=U[M],T=Y*16+g-R;T+=HJ(S,b[0],!0);for(let A=1;A<Y;A++)T+=HJ(S,b[A],!1);if(T+=Math.max(0,32-(jJ>>2)),X.length<W){if(X.push({path:S,fuzzScore:T}),X.length===W)X.sort((A,F)=>A.fuzzScore-F.fuzzScore),N=X[0].fuzzScore}else if(T>N){let A=0,F=X.length;while(A<F){let h=A+F>>1;if(X[h].fuzzScore<T)A=h+1;else F=h}X.splice(A,0,{path:S,fuzzScore:T}),X.shift(),N=X[0].fuzzScore}}X.sort((M,B)=>B.fuzzScore-M.fuzzScore);let I=X.length,w=Math.max(I,1),z=Array(I);for(let M=0;M<I;M++){let B=X[M].path,E=M/w,R=B.includes("test")?Math.min(E*1.05,1):E;z[M]={path:B,score:R}}return z}}function HJ(J,W,Z){if(W===0)return Z?8:0;let V=J.charCodeAt(W-1);if(UJ(V))return 8;if(vJ(V)&&GJ(J.charCodeAt(W)))return 6;return 0}function UJ(J){return J===47||J===92||J===45||J===95||J===46||J===32}function vJ(J){return J>=97&&J<=122}function GJ(J){return J>=65&&J<=90}function y(){return new Promise((J)=>setImmediate(J))}function RJ(J,W){let Z=new Set;for(let Y of J){let H=Y.length;for(let _=0;_<Y.length;_++){let X=Y.charCodeAt(_);if(X===47||X===92){H=_;break}}let $=Y.slice(0,H);if($.length>0){if(Z.add($),Z.size>=W)break}}let V=Array.from(Z);return V.sort((Y,H)=>{let $=Y.length-H.length;if($!==0)return $;return Y<H?-1:Y>H?1:0}),V.slice(0,W).map((Y)=>({path:Y,score:0}))}var _J=4,b;var QJ=XJ(()=>{b=new Int32Array(64)});import{statSync as dJ}from"fs";import cJ from"ignore";import*as O from"path";function l(){if(!K)K=new d;return K}function jV(){K=null,v=null,G++,k=null,C=[],ZJ=[],$J=[],YJ.clear(),n=null,s=null,o=0,a=null,i=null,P=null}function KJ(J){let W=J.length,Z=Math.max(1,Math.floor(W/500)),V=-2128831035;for(let Y=0;Y<W;Y+=Z){let H=J[Y];for(let $=0;$<H.length;$++)V=(V^H.charCodeAt($))*16777619|0;V=V*16777619|0}if(W>0){let Y=J[W-1];for(let H=0;H<Y.length;H++)V=(V^Y.charCodeAt(H))*16777619|0}return`${W}:${(V>>>0).toString(16)}`}function pJ(){let J=VJ(j());if(!J)return null;try{return dJ(O.join(J,".git","index")).mtimeMs}catch{return null}}function MJ(J,W,Z){if(Z===W)return J;return J.map((V)=>{let Y=O.join(W,V);return O.relative(Z,Y)})}async function lJ(J){if(J.length===0)return;if(!K||C.length===0)return;let W=await xJ(J),Z=[...C,...ZJ,...$J,...J,...W],V=KJ(Z);if(V===P){Q("[FileIndex] skipped index rebuild \u2014 merged paths unchanged");return}await K.loadFromFileListAsync(Z).done,P=V,Q(`[FileIndex] rebuilt index with ${C.length} tracked + ${J.length} untracked files`)}async function OJ(J,W){let Z=`${J}:${W}`;if(s===Z)return n;let V=JJ(),Y=[".ignore",".rgignore"],H=[...new Set([J,W])],$=cJ(),_=!1,X=H.flatMap((q)=>Y.map((x)=>O.join(q,x))),N=await Promise.all(X.map((q)=>V.readFile(q,{encoding:"utf8"}).catch(()=>null)));for(let[q,x]of N.entries()){if(x===null)continue;$.add(x),_=!0,Q(`[FileIndex] loaded ignore patterns from ${X[q]}`)}let D=_?$:null;return n=D,s=Z,D}async function nJ(J,W){let Z=Date.now();Q("[FileIndex] getFilesUsingGit called");let V=VJ(j());if(!V)return Q("[FileIndex] not a git repo, returning null"),null;try{let Y=j(),H=Date.now(),$=await c(p(),["-c","core.quotepath=false","ls-files","--recurse-submodules"],{timeout:5000,abortSignal:J,cwd:V});if(Q(`[FileIndex] git ls-files (tracked) took ${Date.now()-H}ms`),$.code!==0)return Q(`[FileIndex] git ls-files failed (code=${$.code}, stderr=${$.stderr}), falling back to ripgrep`),null;let _=$.stdout.trim().split(`
2
+ import{ZJ as TJ,bK as WV,lh as DJ,nh as uJ,qJ as FJ,rh as IJ,sh as BJ,th as hJ}from"./cli-b3k8arn1.js";import{EW as WJ,NW as mJ,Q3 as gJ,x3 as NJ}from"./cli-192xnkcx.js";import{J4 as qJ,O4 as kJ}from"./cli-601zv0wv.js";import{C7 as fJ,d7 as VJ,f7 as p}from"./cli-yb5m6jwq.js";import{J7 as c,K7 as PJ}from"./cli-7wxv39ry.js";import{N7 as j,O7 as yJ}from"./cli-fnt125we.js";import{G8 as L,L8 as bJ}from"./cli-8kpqq0ea.js";import{$8 as LJ,_8 as f}from"./cli-e5yek4vx.js";import{A_ as SJ,Z9 as e,d_ as wJ,n_ as JJ,r_ as zJ,x_ as Q}from"./cli-awb77t95.js";import{e$ as AJ,f$ as CJ}from"./cli-tafg3e9w.js";import{hda as XJ}from"./cli-qwx84m9c.js";class d{paths=[];lowerPaths=[];charBits=new Int32Array(0);pathLens=new Uint16Array(0);topLevelCache=null;readyCount=0;loadFromFileList(J){let W=new Set,Z=[];for(let V of J)if(V.length>0&&!W.has(V))W.add(V),Z.push(V);this.buildIndex(Z)}loadFromFileListAsync(J){let W=()=>{},Z=new Promise((Y)=>{W=Y}),V=this.buildAsync(J,W);return{queryable:Z,done:V}}async buildAsync(J,W){let Z=new Set,V=[],Y=performance.now();for(let $=0;$<J.length;$++){let _=J[$];if(_.length>0&&!Z.has(_))Z.add(_),V.push(_);if(($&255)===255&&performance.now()-Y>4)await y(),Y=performance.now()}this.resetArrays(V),Y=performance.now();let H=!0;for(let $=0;$<V.length;$++)if(this.indexPath($),($&255)===255&&performance.now()-Y>4){if(this.readyCount=$+1,H)W(),H=!1;await y(),Y=performance.now()}this.readyCount=V.length,W()}buildIndex(J){this.resetArrays(J);for(let W=0;W<J.length;W++)this.indexPath(W);this.readyCount=J.length}resetArrays(J){let W=J.length;this.paths=J,this.lowerPaths=Array(W),this.charBits=new Int32Array(W),this.pathLens=new Uint16Array(W),this.readyCount=0,this.topLevelCache=RJ(J,100)}indexPath(J){let W=this.paths[J].toLowerCase();this.lowerPaths[J]=W;let Z=W.length;this.pathLens[J]=Z;let V=0;for(let Y=0;Y<Z;Y++){let H=W.charCodeAt(Y);if(H>=97&&H<=122)V|=1<<H-97}this.charBits[J]=V}search(J,W){if(W<=0)return[];if(J.length===0){if(this.topLevelCache)return this.topLevelCache.slice(0,W);return[]}let Z=J!==J.toLowerCase(),V=Z?J:J.toLowerCase(),Y=Math.min(V.length,64),H=Array(Y),$=0;for(let M=0;M<Y;M++){let B=V.charAt(M);H[M]=B;let E=B.charCodeAt(0);if(E>=97&&E<=122)$|=1<<E-97}let _=Y*24+8+32,X=[],N=-1/0,{paths:D,lowerPaths:q,charBits:x,pathLens:U,readyCount:m}=this;J:for(let M=0;M<m;M++){if((x[M]&$)!==$)continue;let B=Z?D[M]:q[M],E=B.indexOf(H[0]);if(E===-1)continue;b[0]=E;let R=0,g=0,u=E;for(let A=1;A<Y;A++){if(E=B.indexOf(H[A],u+1),E===-1)continue J;b[A]=E;let F=E-u-1;if(F===0)g+=4;else R+=3+F*1;u=E}if(X.length===W&&_+g-R<=N)continue;let S=D[M],jJ=U[M],T=Y*16+g-R;T+=HJ(S,b[0],!0);for(let A=1;A<Y;A++)T+=HJ(S,b[A],!1);if(T+=Math.max(0,32-(jJ>>2)),X.length<W){if(X.push({path:S,fuzzScore:T}),X.length===W)X.sort((A,F)=>A.fuzzScore-F.fuzzScore),N=X[0].fuzzScore}else if(T>N){let A=0,F=X.length;while(A<F){let h=A+F>>1;if(X[h].fuzzScore<T)A=h+1;else F=h}X.splice(A,0,{path:S,fuzzScore:T}),X.shift(),N=X[0].fuzzScore}}X.sort((M,B)=>B.fuzzScore-M.fuzzScore);let I=X.length,w=Math.max(I,1),z=Array(I);for(let M=0;M<I;M++){let B=X[M].path,E=M/w,R=B.includes("test")?Math.min(E*1.05,1):E;z[M]={path:B,score:R}}return z}}function HJ(J,W,Z){if(W===0)return Z?8:0;let V=J.charCodeAt(W-1);if(UJ(V))return 8;if(vJ(V)&&GJ(J.charCodeAt(W)))return 6;return 0}function UJ(J){return J===47||J===92||J===45||J===95||J===46||J===32}function vJ(J){return J>=97&&J<=122}function GJ(J){return J>=65&&J<=90}function y(){return new Promise((J)=>setImmediate(J))}function RJ(J,W){let Z=new Set;for(let Y of J){let H=Y.length;for(let _=0;_<Y.length;_++){let X=Y.charCodeAt(_);if(X===47||X===92){H=_;break}}let $=Y.slice(0,H);if($.length>0){if(Z.add($),Z.size>=W)break}}let V=Array.from(Z);return V.sort((Y,H)=>{let $=Y.length-H.length;if($!==0)return $;return Y<H?-1:Y>H?1:0}),V.slice(0,W).map((Y)=>({path:Y,score:0}))}var _J=4,b;var QJ=XJ(()=>{b=new Int32Array(64)});import{statSync as dJ}from"fs";import cJ from"ignore";import*as O from"path";function l(){if(!K)K=new d;return K}function jV(){K=null,v=null,G++,k=null,C=[],ZJ=[],$J=[],YJ.clear(),n=null,s=null,o=0,a=null,i=null,P=null}function KJ(J){let W=J.length,Z=Math.max(1,Math.floor(W/500)),V=-2128831035;for(let Y=0;Y<W;Y+=Z){let H=J[Y];for(let $=0;$<H.length;$++)V=(V^H.charCodeAt($))*16777619|0;V=V*16777619|0}if(W>0){let Y=J[W-1];for(let H=0;H<Y.length;H++)V=(V^Y.charCodeAt(H))*16777619|0}return`${W}:${(V>>>0).toString(16)}`}function pJ(){let J=VJ(j());if(!J)return null;try{return dJ(O.join(J,".git","index")).mtimeMs}catch{return null}}function MJ(J,W,Z){if(Z===W)return J;return J.map((V)=>{let Y=O.join(W,V);return O.relative(Z,Y)})}async function lJ(J){if(J.length===0)return;if(!K||C.length===0)return;let W=await xJ(J),Z=[...C,...ZJ,...$J,...J,...W],V=KJ(Z);if(V===P){Q("[FileIndex] skipped index rebuild \u2014 merged paths unchanged");return}await K.loadFromFileListAsync(Z).done,P=V,Q(`[FileIndex] rebuilt index with ${C.length} tracked + ${J.length} untracked files`)}async function OJ(J,W){let Z=`${J}:${W}`;if(s===Z)return n;let V=JJ(),Y=[".ignore",".rgignore"],H=[...new Set([J,W])],$=cJ(),_=!1,X=H.flatMap((q)=>Y.map((x)=>O.join(q,x))),N=await Promise.all(X.map((q)=>V.readFile(q,{encoding:"utf8"}).catch(()=>null)));for(let[q,x]of N.entries()){if(x===null)continue;$.add(x),_=!0,Q(`[FileIndex] loaded ignore patterns from ${X[q]}`)}let D=_?$:null;return n=D,s=Z,D}async function nJ(J,W){let Z=Date.now();Q("[FileIndex] getFilesUsingGit called");let V=VJ(j());if(!V)return Q("[FileIndex] not a git repo, returning null"),null;try{let Y=j(),H=Date.now(),$=await c(p(),["-c","core.quotepath=false","ls-files","--recurse-submodules"],{timeout:5000,abortSignal:J,cwd:V});if(Q(`[FileIndex] git ls-files (tracked) took ${Date.now()-H}ms`),$.code!==0)return Q(`[FileIndex] git ls-files failed (code=${$.code}, stderr=${$.stderr}), falling back to ripgrep`),null;let _=$.stdout.trim().split(`
3
3
  `).filter(Boolean),X=MJ(_,V,Y),N=await OJ(V,Y);if(N){let q=X.length;X=N.filter(X),Q(`[FileIndex] applied ignore patterns: ${q} -> ${X.length} files`)}C=X;let D=Date.now()-Z;if(Q(`[FileIndex] git ls-files: ${X.length} tracked files in ${D}ms`),f("tengu_file_suggestions_git_ls_files",{file_count:X.length,tracked_count:X.length,untracked_count:0,duration_ms:D}),!k){let q=W?["-c","core.quotepath=false","ls-files","--others","--exclude-standard"]:["-c","core.quotepath=false","ls-files","--others"],x=G;k=c(p(),q,{timeout:1e4,cwd:V}).then(async(U)=>{if(x!==G)return;if(U.code===0){let m=U.stdout.trim().split(`
4
4
  `).filter(Boolean),I=MJ(m,V,Y),w=await OJ(V,Y);if(w&&I.length>0){let z=I.length;I=w.filter(I),Q(`[FileIndex] applied ignore patterns to untracked: ${z} -> ${I.length} files`)}Q(`[FileIndex] background untracked fetch: ${I.length} files`),lJ(I)}}).catch((U)=>{Q(`[FileIndex] background untracked fetch failed: ${U}`)}).finally(()=>{k=null})}return X}catch(Y){return Q(`[FileIndex] git ls-files error: ${e(Y)}`),null}}async function xJ(J){let W=new Set,Z=performance.now();for(let V=0;V<J.length;V++)if(sJ(J,V,V+1,W),(V&255)===255&&performance.now()-Z>_J)await y(),Z=performance.now();return[...W].map((V)=>V+O.sep)}function sJ(J,W,Z,V){for(let Y=W;Y<Z;Y++){let H=O.dirname(J[Y]);while(H!=="."&&!V.has(H)){let $=O.dirname(H);if($===H)break;V.add(H),H=$}}}async function oJ(J){return(await Promise.all(IJ.map((Z)=>BJ(Z,J)))).flatMap((Z)=>Z.map((V)=>V.filePath))}async function aJ(J,W){Q(`[FileIndex] getProjectFiles called, respectGitignore=${W}`);let Z=await nJ(J,W);if(Z!==null)return Q(`[FileIndex] using git ls-files result (${Z.length} files)`),Z;Q("[FileIndex] git ls-files returned null, falling back to ripgrep");let V=Date.now(),Y=["--files","--follow","--hidden","--glob","!.git/","--glob","!.svn/","--glob","!.hg/","--glob","!.bzr/","--glob","!.jj/","--glob","!.sl/"];if(!W)Y.push("--no-ignore-vcs");let $=(await DJ(Y,".",J)).map((X)=>O.relative(j(),X)),_=Date.now()-V;return Q(`[FileIndex] ripgrep: ${$.length} files in ${_}ms`),f("tengu_file_suggestions_ripgrep",{file_count:$.length,duration_ms:_}),$}async function iJ(){let J=AbortSignal.timeout(1e4),W=l();try{let Z=WJ(),V=NJ(),Y=Z.respectGitignore??V.respectGitignore??!0,H=j(),[$,_]=await Promise.all([aJ(J,Y),oJ(H)]);ZJ=_;let X=[...$,..._],N=await xJ(X);$J=N;let D=[...N,...X],q=KJ(D);if(q!==i)await W.loadFromFileListAsync(D).done,i=q,P=null;else Q("[FileIndex] skipped index rebuild \u2014 tracked paths unchanged")}catch(Z){L(Z)}return W}function rJ(J,W){let Z=Math.min(J.length,W.length),V=0;while(V<Z&&J[V]===W[V])V++;return J.substring(0,V)}function UV(J){if(J.length===0)return"";let W=J.map((V)=>V.displayText),Z=W[0];for(let V=1;V<W.length;V++){let Y=W[V];if(Z=rJ(Z,Y),Z==="")return""}return Z}function r(J,W){return{id:`file-${J}`,displayText:J,metadata:W!==void 0?{score:W}:void 0}}function tJ(J,W){return J.search(W,t).map((V)=>r(V.path,V.score))}function EJ(){if(v)return;let J=pJ();if(K){if(!(J!==null&&J!==a)&&Date.now()-o<eJ)return}let W=G,Z=Date.now();l(),v=iJ().then((V)=>{if(W!==G)return V;return v=null,YJ.emit(),a=J,o=Date.now(),Q(`[FileIndex] cache refresh completed in ${Date.now()-Z}ms`),V}).catch((V)=>{if(Q(`[FileIndex] Cache refresh failed: ${e(V)}`),L(V),W===G)v=null;return l()})}async function JV(){let J=JJ(),W=j();try{return(await J.readdir(W)).map((V)=>{let Y=O.join(W,V.name),H=O.relative(W,Y);return V.isDirectory()?H+O.sep:H})}catch(Z){return L(Z),[]}}async function vV(J,W=!1){if(!J&&!W)return[];if(WJ().fileSuggestion?.type==="command"){let V={...FJ(),query:J};return(await TJ(V)).slice(0,t).map(r)}if(J===""||J==="."||J==="./"){let V=await JV();return EJ(),V.slice(0,t).map(r)}let Z=Date.now();try{let V=v!==null;EJ();let Y=J,H="."+O.sep;if(J.startsWith(H))Y=J.substring(2);if(Y.startsWith("~"))Y=qJ(Y);let $=K?tJ(K,Y):[],_=Date.now()-Z;return Q(`[FileIndex] generateFileSuggestions: ${$.length} results in ${_}ms (${V?"partial":"full"} index)`),f("tengu_file_suggestions_query",{duration_ms:_,cache_hit:!V,result_count:$.length,query_length:J.length}),$}catch(V){return L(V),[]}}function GV(J,W,Z,V,Y,H){let $=typeof J==="string"?J:J.displayText,_=W.substring(0,V)+$+W.substring(V+Z.length);Y(_);let X=V+$.length;H(X)}var K=null,v=null,YJ,TV,G=0,k=null,C,ZJ,$J,n=null,s=null,o=0,a=null,i=null,P=null,t=15,eJ=5000;var VV=XJ(()=>{hJ();QJ();LJ();gJ();yJ();SJ();wJ();PJ();zJ();fJ();WV();bJ();kJ();uJ();mJ();CJ();YJ=AJ(),TV=YJ.subscribe,C=[],ZJ=[],$J=[]});
5
5
  export{TV as Af,jV as Bf,UV as Cf,EJ as Df,vV as Ef,GV as Ff,VV as Gf};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{AN as N,BN as T,FN as A,kN as J,lN as K,mN as M,nN as P,oN as Q,pN as R,qN as U,rN as V,sN as W,tN as X,uN as Y,vN as Z,wN as $,xN as j,yN as v,zN as H}from"./cli-3m8n808e.js";import{fda as x}from"./cli-w1d8n9g3.js";function L(z,q=0){let F=_[z.species],C=[...F[q%F.length].map((G)=>G.replaceAll("{E}",z.eye))];if(z.hat!=="none"&&!C[0].trim())C[0]=B[z.hat];if(!C[0].trim()&&F.every((G)=>!G[0].trim()))C.shift();return C}function O(z){return _[z].length}function S(z){let q=z.eye;switch(z.species){case J:case K:return`(${q}>`;case M:return`(${q}${q})`;case P:return`=${q}\u03C9${q}=`;case Q:return`<${q}~${q}>`;case R:return`~(${q}${q})~`;case U:return`(${q})(${q})`;case V:return`(${q}>)`;case W:return`[${q}_${q}]`;case X:return`${q}(@)`;case Y:return`/${q}${q}\\`;case Z:return`}${q}.${q}{`;case $:return`(${q}oo${q})`;case j:return`|${q} ${q}|`;case v:return`[${q}${q}]`;case H:return`(${q}..${q})`;case N:return`|${q} ${q}|`;case T:return`(${q}.${q})`}}var _,B;var D=x(()=>{A();_={[J]:[[" "," __ "," <({E} )___ "," ( ._> "," `--\xB4 "],[" "," __ "," <({E} )___ "," ( ._> "," `--\xB4~ "],[" "," __ "," <({E} )___ "," ( .__> "," `--\xB4 "]],[K]:[[" "," ({E}> "," || "," _(__)_ "," ^^^^ "],[" "," ({E}> "," || "," _(__)_ "," ^^^^ "],[" "," ({E}>> "," || "," _(__)_ "," ^^^^ "]],[M]:[[" "," .----. "," ( {E} {E} ) "," ( ) "," `----\xB4 "],[" "," .------. "," ( {E} {E} ) "," ( ) "," `------\xB4 "],[" "," .--. "," ({E} {E}) "," ( ) "," `--\xB4 "]],[P]:[[" "," /\\_/\\ "," ( {E} {E}) "," ( \u03C9 ) ",' (")_(") '],[" "," /\\_/\\ "," ( {E} {E}) "," ( \u03C9 ) ",' (")_(")~ '],[" "," /\\-/\\ "," ( {E} {E}) "," ( \u03C9 ) ",' (")_(") ']],[Q]:[[" "," /^\\ /^\\ "," < {E} {E} > "," ( ~~ ) "," `-vvvv-\xB4 "],[" "," /^\\ /^\\ "," < {E} {E} > "," ( ) "," `-vvvv-\xB4 "],[" ~ ~ "," /^\\ /^\\ "," < {E} {E} > "," ( ~~ ) "," `-vvvv-\xB4 "]],[R]:[[" "," .----. "," ( {E} {E} ) "," (______) "," /\\/\\/\\/\\ "],[" "," .----. "," ( {E} {E} ) "," (______) "," \\/\\/\\/\\/ "],[" o "," .----. "," ( {E} {E} ) "," (______) "," /\\/\\/\\/\\ "]],[U]:[[" "," /\\ /\\ "," (({E})({E})) "," ( >< ) "," `----\xB4 "],[" "," /\\ /\\ "," (({E})({E})) "," ( >< ) "," .----. "],[" "," /\\ /\\ "," (({E})(-)) "," ( >< ) "," `----\xB4 "]],[V]:[[" "," .---. "," ({E}>{E}) "," /( )\\ "," `---\xB4 "],[" "," .---. "," ({E}>{E}) "," |( )| "," `---\xB4 "],[" .---. "," ({E}>{E}) "," /( )\\ "," `---\xB4 "," ~ ~ "]],[W]:[[" "," _,--._ "," ( {E} {E} ) "," /[______]\\ "," `` `` "],[" "," _,--._ "," ( {E} {E} ) "," /[______]\\ "," `` `` "],[" "," _,--._ "," ( {E} {E} ) "," /[======]\\ "," `` `` "]],[X]:[[" "," {E} .--. "," \\ ( @ ) "," \\_`--\xB4 "," ~~~~~~~ "],[" "," {E} .--. "," | ( @ ) "," \\_`--\xB4 "," ~~~~~~~ "],[" "," {E} .--. "," \\ ( @ ) "," \\_`--\xB4 "," ~~~~~~ "]],[Y]:[[" "," .----. "," / {E} {E} \\ "," | | "," ~`~``~`~ "],[" "," .----. "," / {E} {E} \\ "," | | "," `~`~~`~` "],[" ~ ~ "," .----. "," / {E} {E} \\ "," | | "," ~~`~~`~~ "]],[Z]:[[" ","}~(______)~{","}~({E} .. {E})~{"," ( .--. ) "," (_/ \\_) "],[" ","~}(______){~","~}({E} .. {E}){~"," ( .--. ) "," (_/ \\_) "],[" ","}~(______)~{","}~({E} .. {E})~{"," ( -- ) "," ~_/ \\_~ "]],[$]:[[" "," n______n "," ( {E} {E} ) "," ( oo ) "," `------\xB4 "],[" "," n______n "," ( {E} {E} ) "," ( Oo ) "," `------\xB4 "],[" ~ ~ "," u______n "," ( {E} {E} ) "," ( oo ) "," `------\xB4 "]],[j]:[[" "," n ____ n "," | |{E} {E}| | "," |_| |_| "," | | "],[" "," ____ "," n |{E} {E}| n "," |_| |_| "," | | "],[" n n "," | ____ | "," | |{E} {E}| | "," |_| |_| "," | | "]],[v]:[[" "," .[||]. "," [ {E} {E} ] "," [ ==== ] "," `------\xB4 "],[" "," .[||]. "," [ {E} {E} ] "," [ -==- ] "," `------\xB4 "],[" * "," .[||]. "," [ {E} {E} ] "," [ ==== ] "," `------\xB4 "]],[H]:[[" "," (\\__/) "," ( {E} {E} ) "," =( .. )= ",' (")__(") '],[" "," (|__/) "," ( {E} {E} ) "," =( .. )= ",' (")__(") '],[" "," (\\__/) "," ( {E} {E} ) "," =( . . )= ",' (")__(") ']],[N]:[[" "," .-o-OO-o-. ","(__________)"," |{E} {E}| "," |____| "],[" "," .-O-oo-O-. ","(__________)"," |{E} {E}| "," |____| "],[" . o . "," .-o-OO-o-. ","(__________)"," |{E} {E}| "," |____| "]],[T]:[[" "," /\\ /\\ "," ( {E} {E} ) "," ( .. ) "," `------\xB4 "],[" "," /\\ /| "," ( {E} {E} ) "," ( .. ) "," `------\xB4 "],[" "," /\\ /\\ "," ( {E} {E} ) "," ( .. ) "," `------\xB4~ "]]},B={none:"",crown:" \\^^^/ ",tophat:" [___] ",propeller:" -+- ",halo:" ( ) ",wizard:" /^\\ ",beanie:" (___) ",tinyduck:" ,> "}});
2
+ import{AN as N,BN as T,FN as A,kN as J,lN as K,mN as M,nN as P,oN as Q,pN as R,qN as U,rN as V,sN as W,tN as X,uN as Y,vN as Z,wN as $,xN as j,yN as v,zN as H}from"./cli-1p7nc6zb.js";import{hda as x}from"./cli-qwx84m9c.js";function L(z,q=0){let F=_[z.species],C=[...F[q%F.length].map((G)=>G.replaceAll("{E}",z.eye))];if(z.hat!=="none"&&!C[0].trim())C[0]=B[z.hat];if(!C[0].trim()&&F.every((G)=>!G[0].trim()))C.shift();return C}function O(z){return _[z].length}function S(z){let q=z.eye;switch(z.species){case J:case K:return`(${q}>`;case M:return`(${q}${q})`;case P:return`=${q}\u03C9${q}=`;case Q:return`<${q}~${q}>`;case R:return`~(${q}${q})~`;case U:return`(${q})(${q})`;case V:return`(${q}>)`;case W:return`[${q}_${q}]`;case X:return`${q}(@)`;case Y:return`/${q}${q}\\`;case Z:return`}${q}.${q}{`;case $:return`(${q}oo${q})`;case j:return`|${q} ${q}|`;case v:return`[${q}${q}]`;case H:return`(${q}..${q})`;case N:return`|${q} ${q}|`;case T:return`(${q}.${q})`}}var _,B;var D=x(()=>{A();_={[J]:[[" "," __ "," <({E} )___ "," ( ._> "," `--\xB4 "],[" "," __ "," <({E} )___ "," ( ._> "," `--\xB4~ "],[" "," __ "," <({E} )___ "," ( .__> "," `--\xB4 "]],[K]:[[" "," ({E}> "," || "," _(__)_ "," ^^^^ "],[" "," ({E}> "," || "," _(__)_ "," ^^^^ "],[" "," ({E}>> "," || "," _(__)_ "," ^^^^ "]],[M]:[[" "," .----. "," ( {E} {E} ) "," ( ) "," `----\xB4 "],[" "," .------. "," ( {E} {E} ) "," ( ) "," `------\xB4 "],[" "," .--. "," ({E} {E}) "," ( ) "," `--\xB4 "]],[P]:[[" "," /\\_/\\ "," ( {E} {E}) "," ( \u03C9 ) ",' (")_(") '],[" "," /\\_/\\ "," ( {E} {E}) "," ( \u03C9 ) ",' (")_(")~ '],[" "," /\\-/\\ "," ( {E} {E}) "," ( \u03C9 ) ",' (")_(") ']],[Q]:[[" "," /^\\ /^\\ "," < {E} {E} > "," ( ~~ ) "," `-vvvv-\xB4 "],[" "," /^\\ /^\\ "," < {E} {E} > "," ( ) "," `-vvvv-\xB4 "],[" ~ ~ "," /^\\ /^\\ "," < {E} {E} > "," ( ~~ ) "," `-vvvv-\xB4 "]],[R]:[[" "," .----. "," ( {E} {E} ) "," (______) "," /\\/\\/\\/\\ "],[" "," .----. "," ( {E} {E} ) "," (______) "," \\/\\/\\/\\/ "],[" o "," .----. "," ( {E} {E} ) "," (______) "," /\\/\\/\\/\\ "]],[U]:[[" "," /\\ /\\ "," (({E})({E})) "," ( >< ) "," `----\xB4 "],[" "," /\\ /\\ "," (({E})({E})) "," ( >< ) "," .----. "],[" "," /\\ /\\ "," (({E})(-)) "," ( >< ) "," `----\xB4 "]],[V]:[[" "," .---. "," ({E}>{E}) "," /( )\\ "," `---\xB4 "],[" "," .---. "," ({E}>{E}) "," |( )| "," `---\xB4 "],[" .---. "," ({E}>{E}) "," /( )\\ "," `---\xB4 "," ~ ~ "]],[W]:[[" "," _,--._ "," ( {E} {E} ) "," /[______]\\ "," `` `` "],[" "," _,--._ "," ( {E} {E} ) "," /[______]\\ "," `` `` "],[" "," _,--._ "," ( {E} {E} ) "," /[======]\\ "," `` `` "]],[X]:[[" "," {E} .--. "," \\ ( @ ) "," \\_`--\xB4 "," ~~~~~~~ "],[" "," {E} .--. "," | ( @ ) "," \\_`--\xB4 "," ~~~~~~~ "],[" "," {E} .--. "," \\ ( @ ) "," \\_`--\xB4 "," ~~~~~~ "]],[Y]:[[" "," .----. "," / {E} {E} \\ "," | | "," ~`~``~`~ "],[" "," .----. "," / {E} {E} \\ "," | | "," `~`~~`~` "],[" ~ ~ "," .----. "," / {E} {E} \\ "," | | "," ~~`~~`~~ "]],[Z]:[[" ","}~(______)~{","}~({E} .. {E})~{"," ( .--. ) "," (_/ \\_) "],[" ","~}(______){~","~}({E} .. {E}){~"," ( .--. ) "," (_/ \\_) "],[" ","}~(______)~{","}~({E} .. {E})~{"," ( -- ) "," ~_/ \\_~ "]],[$]:[[" "," n______n "," ( {E} {E} ) "," ( oo ) "," `------\xB4 "],[" "," n______n "," ( {E} {E} ) "," ( Oo ) "," `------\xB4 "],[" ~ ~ "," u______n "," ( {E} {E} ) "," ( oo ) "," `------\xB4 "]],[j]:[[" "," n ____ n "," | |{E} {E}| | "," |_| |_| "," | | "],[" "," ____ "," n |{E} {E}| n "," |_| |_| "," | | "],[" n n "," | ____ | "," | |{E} {E}| | "," |_| |_| "," | | "]],[v]:[[" "," .[||]. "," [ {E} {E} ] "," [ ==== ] "," `------\xB4 "],[" "," .[||]. "," [ {E} {E} ] "," [ -==- ] "," `------\xB4 "],[" * "," .[||]. "," [ {E} {E} ] "," [ ==== ] "," `------\xB4 "]],[H]:[[" "," (\\__/) "," ( {E} {E} ) "," =( .. )= ",' (")__(") '],[" "," (|__/) "," ( {E} {E} ) "," =( .. )= ",' (")__(") '],[" "," (\\__/) "," ( {E} {E} ) "," =( . . )= ",' (")__(") ']],[N]:[[" "," .-o-OO-o-. ","(__________)"," |{E} {E}| "," |____| "],[" "," .-O-oo-O-. ","(__________)"," |{E} {E}| "," |____| "],[" . o . "," .-o-OO-o-. ","(__________)"," |{E} {E}| "," |____| "]],[T]:[[" "," /\\ /\\ "," ( {E} {E} ) "," ( .. ) "," `------\xB4 "],[" "," /\\ /| "," ( {E} {E} ) "," ( .. ) "," `------\xB4 "],[" "," /\\ /\\ "," ( {E} {E} ) "," ( .. ) "," `------\xB4~ "]]},B={none:"",crown:" \\^^^/ ",tophat:" [___] ",propeller:" -+- ",halo:" ( ) ",wizard:" /^\\ ",beanie:" (___) ",tinyduck:" ,> "}});
3
3
  export{L as Ya,O as Za,S as _a,D as $a};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{HK as z,Hk as I,IE as L,Ik as v,JK as x,VE as X}from"./cli-me4e2p3e.js";import{T3 as P,Y3 as w}from"./cli-msw0vv86.js";import{$4 as R,a5 as j}from"./cli-fakdskp6.js";import{Y8 as F,Z8 as A}from"./cli-t9jht3kb.js";import{v_ as k,y_ as b}from"./cli-hke6r0q8.js";import{Taa as C,bda as y}from"./cli-3ac555qw.js";import{fda as H}from"./cli-w1d8n9g3.js";function O(Q){return Q.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&amp;/g,"&")}function K(Q,Y){let U=Q.match(new RegExp(`<${Y}(?:\\s[^>]*)?>([\\s\\S]*?)<\\/${Y}>`,"i"))?.[1]?.trim();return U?O(U):void 0}function D(Q){return Q.replace(/\s+/g," ").trim()}function B(Q){let Y=K(Q,"command-name"),Z=K(Q,"command-args");if(Y)return D([Y,Z].filter(Boolean).join(" "));let U=Q.replace(M," ");return D(U)}function V(Q){return/<([a-z][\w-]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>/.test(Q)}var M;var W=H(()=>{M=/<([a-z][\w-]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>\n?/g});import{z as f}from"zod/v4";function n(Q){let Y=[];for(let U of Q){if(U.type!=="user"&&U.type!=="assistant")continue;if("isMeta"in U&&U.isMeta)continue;if("origin"in U&&U.origin&&U.origin.kind!=="human")continue;let q=U.message.content;if(typeof q==="string")Y.push(q);else if(Array.isArray(q)){for(let $ of q)if("type"in $&&$.type==="text"&&"text"in $)Y.push($.text)}}let Z=Y.join(`
2
+ import{HK as z,Hk as I,IE as L,Ik as v,JK as x,VE as X}from"./cli-b3k8arn1.js";import{T3 as P,Y3 as w}from"./cli-ca1jmr8f.js";import{$4 as R,a5 as j}from"./cli-t5ddsvmv.js";import{$8 as A,_8 as F}from"./cli-e5yek4vx.js";import{A_ as b,x_ as k}from"./cli-awb77t95.js";import{Vaa as C,dda as y}from"./cli-tafg3e9w.js";import{hda as H}from"./cli-qwx84m9c.js";function O(Q){return Q.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&amp;/g,"&")}function K(Q,Y){let U=Q.match(new RegExp(`<${Y}(?:\\s[^>]*)?>([\\s\\S]*?)<\\/${Y}>`,"i"))?.[1]?.trim();return U?O(U):void 0}function D(Q){return Q.replace(/\s+/g," ").trim()}function B(Q){let Y=K(Q,"command-name"),Z=K(Q,"command-args");if(Y)return D([Y,Z].filter(Boolean).join(" "));let U=Q.replace(M," ");return D(U)}function V(Q){return/<([a-z][\w-]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>/.test(Q)}var M;var W=H(()=>{M=/<([a-z][\w-]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>\n?/g});import{z as f}from"zod/v4";function n(Q){let Y=[];for(let U of Q){if(U.type!=="user"&&U.type!=="assistant")continue;if("isMeta"in U&&U.isMeta)continue;if("origin"in U&&U.origin&&U.origin.kind!=="human")continue;let q=U.message.content;if(typeof q==="string")Y.push(q);else if(Array.isArray(q)){for(let $ of q)if("type"in $&&$.type==="text"&&"text"in $)Y.push($.text)}}let Z=Y.join(`
3
3
  `);return Z.length>G?Z.slice(-G):Z}function E(Q){let Y=B(Q);if(!Y)return null;if(Y.length>N)return null;if(V(Y))return null;return Y}async function a(Q,Y){let Z=B(Q);if(!Z)return null;try{let U=await z({systemPrompt:I([_]),userPrompt:Z,outputFormat:{type:"json_schema",schema:{type:"object",properties:{title:{type:"string"}},required:["title"],additionalProperties:!1}},signal:Y,options:{querySource:"generate_session_title",agents:[],isNonInteractiveSession:C(),hasAppendSystemPrompt:!1,mcpTools:[]}}),q=L(U.message.content),$=h().safeParse(P(q)),J=$.success?E($.data.title):null;return F("tengu_session_title_generated",{success:J!==null}),J}catch(U){return k(`generateSessionTitle failed: ${U}`,{level:"error"}),F("tengu_session_title_generated",{success:!1}),null}}var G=1000,N=80,_=`Generate a concise, sentence-case title (3-7 words) that captures the main topic or goal of this coding session. The title should be clear enough that the user recognizes the session in a list. Use sentence case: capitalize only the first word and proper nouns.
4
4
 
5
5
  Return JSON with a single "title" field.
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{EX as z,F1 as V,G1 as G,H1 as W,JX as Q,O1 as J,Q1 as X,b1 as B,g1 as D,h1 as F}from"./cli-msmzt4c3.js";import{B9 as y,C9 as N}from"./cli-kq16afrr.js";import{fda as M}from"./cli-w1d8n9g3.js";import Y from"axios";async function b(){if(!D()||!F())return{};let w=B();if(w&&z(w.expiresAt))return null;let q=J();if(q.error)throw Error(`Auth error: ${q.error}`);let K={"Content-Type":"application/json","User-Agent":G(),...q.headers},L=`${y().BASE_API_URL}/api/oauth/usage`;return(await Y.get(L,{headers:K,timeout:5000})).data}var Z=M(()=>{N();V();X();W();Q()});
2
+ import{EX as z,F1 as V,G1 as G,H1 as W,JX as Q,O1 as J,Q1 as X,b1 as B,g1 as D,h1 as F}from"./cli-192xnkcx.js";import{D9 as y,E9 as N}from"./cli-zxe1a0ey.js";import{hda as M}from"./cli-qwx84m9c.js";import Y from"axios";async function b(){if(!D()||!F())return{};let w=B();if(w&&z(w.expiresAt))return null;let q=J();if(q.error)throw Error(`Auth error: ${q.error}`);let K={"Content-Type":"application/json","User-Agent":G(),...q.headers},L=`${y().BASE_API_URL}/api/oauth/usage`;return(await Y.get(L,{headers:K,timeout:5000})).data}var Z=M(()=>{N();V();X();W();Q()});
3
3
  export{b as rg,Z as sg};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{VE as I,aj as J,bj as f,gw as Q,hE as W,jw as F}from"./cli-me4e2p3e.js";import{T7 as B,U7 as H,o8 as $}from"./cli-4ewb3q42.js";import{bda as Z,e$ as v}from"./cli-3ac555qw.js";import{fda as Y}from"./cli-w1d8n9g3.js";import{randomUUID as P}from"crypto";import U from"strip-ansi";function L(j){return j.flatMap((h)=>{switch(h.type){case"assistant":return[{type:"assistant",message:h.message,uuid:h.uuid,requestId:void 0,timestamp:new Date().toISOString()}];case"user":return[{type:"user",message:h.message,uuid:h.uuid??P(),timestamp:h.timestamp??new Date().toISOString(),isMeta:h.isSynthetic}];case"system":if(h.subtype==="compact_boundary")return[{type:"system",content:"Conversation compacted",level:"info",subtype:"compact_boundary",compactMetadata:X(h.compact_metadata),uuid:h.uuid,timestamp:new Date().toISOString()}];return[];default:return[]}})}function V(j){let h=j.preservedSegment;return{trigger:j.trigger,pre_tokens:j.preTokens,...h&&{preserved_segment:{head_uuid:h.headUuid,anchor_uuid:h.anchorUuid,tail_uuid:h.tailUuid}}}}function X(j){let h=j.preserved_segment;return{trigger:j.trigger,preTokens:j.pre_tokens,...h&&{preservedSegment:{headUuid:h.head_uuid,anchorUuid:h.anchor_uuid,tailUuid:h.tail_uuid}}}}function S(j){return j.flatMap((h)=>{switch(h.type){case"assistant":return[{type:"assistant",message:z(h),session_id:v(),parent_tool_use_id:null,uuid:h.uuid,error:h.error}];case"user":return[{type:"user",message:h.message,session_id:v(),parent_tool_use_id:null,uuid:h.uuid,timestamp:h.timestamp,isSynthetic:h.isMeta||h.isVisibleInTranscriptOnly,...h.toolUseResult!==void 0?{tool_use_result:h.toolUseResult}:{}}];case"system":if(h.subtype==="compact_boundary"&&h.compactMetadata)return[{type:"system",subtype:"compact_boundary",session_id:v(),uuid:h.uuid,compact_metadata:V(h.compactMetadata)}];if(h.subtype==="local_command"&&(h.content.includes(`<${B}>`)||h.content.includes(`<${H}>`)))return[w(h.content,h.uuid)];return[];default:return[]}})}function w(j,h){let x=U(j).replace(/<local-command-stdout>([\s\S]*?)<\/local-command-stdout>/,"$1").replace(/<local-command-stderr>([\s\S]*?)<\/local-command-stderr>/,"$1").trim();return{type:"assistant",message:W({content:x}).message,parent_tool_use_id:null,session_id:v(),uuid:h}}function r(j){if(!j)return;return{status:j.status,...j.resetsAt!==void 0&&{resetsAt:j.resetsAt},...j.rateLimitType!==void 0&&{rateLimitType:j.rateLimitType},...j.utilization!==void 0&&{utilization:j.utilization},...j.overageStatus!==void 0&&{overageStatus:j.overageStatus},...j.overageResetsAt!==void 0&&{overageResetsAt:j.overageResetsAt},...j.overageDisabledReason!==void 0&&{overageDisabledReason:j.overageDisabledReason},...j.isUsingOverage!==void 0&&{isUsingOverage:j.isUsingOverage},...j.surpassedThreshold!==void 0&&{surpassedThreshold:j.surpassedThreshold}}}function z(j){let h=j.message.content;if(!Array.isArray(h))return j.message;let x=h.map((q)=>{if(q.type!=="tool_use")return q;if(q.name===J){let y=Q();if(y)return{...q,input:{...q.input,plan:y}}}return q});return{...j.message,content:x}}var G=Y(()=>{Z();$();f();I();F()});
2
+ import{VE as I,aj as J,bj as f,gw as Q,hE as W,jw as F}from"./cli-b3k8arn1.js";import{V7 as B,W7 as H,q8 as $}from"./cli-8kpqq0ea.js";import{dda as Z,g$ as v}from"./cli-tafg3e9w.js";import{hda as Y}from"./cli-qwx84m9c.js";import{randomUUID as P}from"crypto";import U from"strip-ansi";function L(j){return j.flatMap((h)=>{switch(h.type){case"assistant":return[{type:"assistant",message:h.message,uuid:h.uuid,requestId:void 0,timestamp:new Date().toISOString()}];case"user":return[{type:"user",message:h.message,uuid:h.uuid??P(),timestamp:h.timestamp??new Date().toISOString(),isMeta:h.isSynthetic}];case"system":if(h.subtype==="compact_boundary")return[{type:"system",content:"Conversation compacted",level:"info",subtype:"compact_boundary",compactMetadata:X(h.compact_metadata),uuid:h.uuid,timestamp:new Date().toISOString()}];return[];default:return[]}})}function V(j){let h=j.preservedSegment;return{trigger:j.trigger,pre_tokens:j.preTokens,...h&&{preserved_segment:{head_uuid:h.headUuid,anchor_uuid:h.anchorUuid,tail_uuid:h.tailUuid}}}}function X(j){let h=j.preserved_segment;return{trigger:j.trigger,preTokens:j.pre_tokens,...h&&{preservedSegment:{headUuid:h.head_uuid,anchorUuid:h.anchor_uuid,tailUuid:h.tail_uuid}}}}function S(j){return j.flatMap((h)=>{switch(h.type){case"assistant":return[{type:"assistant",message:z(h),session_id:v(),parent_tool_use_id:null,uuid:h.uuid,error:h.error}];case"user":return[{type:"user",message:h.message,session_id:v(),parent_tool_use_id:null,uuid:h.uuid,timestamp:h.timestamp,isSynthetic:h.isMeta||h.isVisibleInTranscriptOnly,...h.toolUseResult!==void 0?{tool_use_result:h.toolUseResult}:{}}];case"system":if(h.subtype==="compact_boundary"&&h.compactMetadata)return[{type:"system",subtype:"compact_boundary",session_id:v(),uuid:h.uuid,compact_metadata:V(h.compactMetadata)}];if(h.subtype==="local_command"&&(h.content.includes(`<${B}>`)||h.content.includes(`<${H}>`)))return[w(h.content,h.uuid)];return[];default:return[]}})}function w(j,h){let x=U(j).replace(/<local-command-stdout>([\s\S]*?)<\/local-command-stdout>/,"$1").replace(/<local-command-stderr>([\s\S]*?)<\/local-command-stderr>/,"$1").trim();return{type:"assistant",message:W({content:x}).message,parent_tool_use_id:null,session_id:v(),uuid:h}}function r(j){if(!j)return;return{status:j.status,...j.resetsAt!==void 0&&{resetsAt:j.resetsAt},...j.rateLimitType!==void 0&&{rateLimitType:j.rateLimitType},...j.utilization!==void 0&&{utilization:j.utilization},...j.overageStatus!==void 0&&{overageStatus:j.overageStatus},...j.overageResetsAt!==void 0&&{overageResetsAt:j.overageResetsAt},...j.overageDisabledReason!==void 0&&{overageDisabledReason:j.overageDisabledReason},...j.isUsingOverage!==void 0&&{isUsingOverage:j.isUsingOverage},...j.surpassedThreshold!==void 0&&{surpassedThreshold:j.surpassedThreshold}}}function z(j){let h=j.message.content;if(!Array.isArray(h))return j.message;let x=h.map((q)=>{if(q.type!=="tool_use")return q;if(q.name===J){let y=Q();if(y)return{...q,input:{...q.input,plan:y}}}return q});return{...j.message,content:x}}var G=Y(()=>{Z();$();f();I();F()});
3
3
  export{L as Tb,V as Ub,X as Vb,S as Wb,w as Xb,r as Yb,G as Zb};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Oa as I0,Pa as l0}from"./cli-m12smc5e.js";import{ir as $0,jr as R0,kr as J2,pr as y0,qr as Z2}from"./cli-me4e2p3e.js";import{AZ as D,BW as z,BZ as Y,CZ as d,DZ as s,EZ as r,F1 as W2,FW as E,FZ as v,GZ as e,HZ as h0,IZ as U0,JZ as k0,KZ as b0,L0 as F0,LZ as p0,MZ as t0,NW as N0,P0 as X0,Q3 as Q0,SU as a,TU as W0,U0 as P0,UZ as i,VZ as _0,YU as A2,eY as A,fY as T0,gY as c0,hY as M0,jY as B0,kY as d0,mU as i0,oU as x2,u3 as G,x3 as _,zW as V,zZ as u0}from"./cli-msmzt4c3.js";import{i5 as J0,j5 as q2,m5 as Z0,o5 as i2,w5 as G0,y5 as j0,z5 as N2}from"./cli-f63fdj4w.js";import{E8 as A0,J8 as g2}from"./cli-4ewb3q42.js";import{W9 as g0,b_ as Y2}from"./cli-hke6r0q8.js";import{F_ as J,I_ as q0,S_ as H2}from"./cli-tq5z9qv3.js";import{bda as D2,raa as O}from"./cli-3ac555qw.js";Z2();import{readFileSync as G2}from"fs";import{join as j2}from"path";_0();import*as K0 from"fs";import*as L0 from"path";import{z as T}from"zod";var o=[{id:"official",name:"Claude Official",baseUrl:"",apiFormat:"anthropic",defaultModels:{main:"",haiku:"",sonnet:"",opus:""},needsApiKey:!1,websiteUrl:"https://www.anthropic.com/claude-code"},{id:"deepseek",name:"DeepSeek",baseUrl:"https://api.deepseek.com/anthropic",apiFormat:"anthropic",defaultModels:{main:"deepseek-v4-pro",haiku:"deepseek-v4-flash",sonnet:"deepseek-v4-pro",opus:"deepseek-v4-pro"},needsApiKey:!0,websiteUrl:"https://platform.deepseek.com",apiKeyUrl:"https://platform.deepseek.com/api_keys",authStrategy:"auth_token",defaultEnv:{ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES:"thinking,effort,adaptive_thinking,max_effort",ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES:"thinking,effort,adaptive_thinking,max_effort",ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES:"thinking,effort,adaptive_thinking,max_effort"},modelContextWindows:{"deepseek-v4-pro":1e6,"deepseek-v4-flash":1e6,"deepseek-chat":1e6,"deepseek-reasoner":1e6}},{id:"zhipuglm",name:"Zhipu GLM",baseUrl:"https://open.bigmodel.cn/api/anthropic",apiFormat:"anthropic",defaultModels:{main:"glm-5.1",haiku:"glm-4.5-air",sonnet:"glm-5-turbo",opus:"glm-5.1"},needsApiKey:!0,websiteUrl:"https://open.bigmodel.cn",apiKeyUrl:"https://www.bigmodel.cn/invite?icode=d41B2qi8Z5xNwTGLNPPF3OZLO2QH3C0EBTSr%2BArzMw4%3D",promoText:"\u667A\u8C31 GLM \u4E3A cc-haha \u7528\u6237\u51C6\u5907\u4E86\u4E13\u5C5E\u9080\u8BF7\u798F\u5229\uFF0C\u4F7F\u7528\u6B64\u94FE\u63A5\u6CE8\u518C\u540E\u53EF\u9886\u53D6\u65B0\u7528\u6237\u6743\u76CA\u3002",authStrategy:"auth_token",defaultEnv:{CC_HAHA_SEND_DISABLED_THINKING:"1"},modelContextWindows:{"glm-5.1":200000,"glm-5-turbo":200000,"glm-4.5-air":128000}},{id:"kimi",name:"Kimi",baseUrl:"https://api.kimi.com/coding",apiFormat:"anthropic",defaultModels:{main:"kimi-k2.6",haiku:"kimi-k2.6",sonnet:"kimi-k2.6",opus:"kimi-k2.6"},needsApiKey:!0,websiteUrl:"https://platform.moonshot.cn",apiKeyUrl:"https://platform.kimi.com/console/api-keys",authStrategy:"auth_token",defaultEnv:{CC_HAHA_SEND_DISABLED_THINKING:"1"},modelContextWindows:{"kimi-k2.6":262144,"kimi-k2.5":262144,"kimi-k2-0905-preview":262144,"kimi-k2-turbo-preview":262144,"kimi-k2-thinking":262144,"kimi-k2-thinking-turbo":262144}},{id:"minimax",name:"MiniMax",baseUrl:"https://api.minimaxi.com/anthropic",apiFormat:"anthropic",defaultModels:{main:"MiniMax-M2.7",haiku:"MiniMax-M2.7",sonnet:"MiniMax-M2.7",opus:"MiniMax-M2.7"},needsApiKey:!0,websiteUrl:"https://platform.minimaxi.com",apiKeyUrl:"https://platform.minimaxi.com/subscribe/token-plan?code=1TG2Cseab2&source=link",authStrategy:"auth_token",modelContextWindows:{"MiniMax-M2.7":204800,"MiniMax-M2.7-highspeed":204800,"MiniMax-M2.5":204800,"MiniMax-M2.5-highspeed":204800,"MiniMax-M2.1":204800,"MiniMax-M2.1-highspeed":204800,"MiniMax-M2":204800}},{id:"jiekouai",name:"\u63A5\u53E3AI",baseUrl:"https://api.jiekou.ai/anthropic",apiFormat:"anthropic",defaultModels:{main:"claude-sonnet-4-6",haiku:"claude-haiku-4-5-20251001",sonnet:"claude-sonnet-4-6",opus:"claude-opus-4-7"},needsApiKey:!0,websiteUrl:"https://jiekou.ai",apiKeyUrl:"https://jiekou.ai/referral?invited_code=OBNU3K",promoText:"\u63A5\u53E3AI\u4E3A cc-haha \u7684\u7528\u6237\u63D0\u4F9B\u5B98\u65B9\u8D44\u6E90\u4E0E\u7A33\u5B9A\u9AD8\u6027\u80FD\u4F53\u9A8C\uFF0C\u8BA2\u9605\u5305\u4EF7\u683C\u4E3A\u5B98\u65B9 8 \u6298\uFF1B\u7ED1\u5B9A GitHub \u540E\u8FD8\u53EF\u9886\u53D6 3 \u7F8E\u5143\u4F18\u60E0\u5238\u3002",featured:!0,authStrategy:"auth_token",defaultEnv:{ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES:"none"},modelContextWindows:{"claude-sonnet-4-6":1e6,"claude-haiku-4-5-20251001":200000,"claude-haiku-4-5":200000,"claude-opus-4-7":1e6}},{id:"shengsuanyun",name:"\u80DC\u7B97\u4E91",baseUrl:"https://router.shengsuanyun.com/api",apiFormat:"anthropic",defaultModels:{main:"anthropic/claude-sonnet-4.6",haiku:"anthropic/claude-haiku-4.5:thinking",sonnet:"anthropic/claude-sonnet-4.6",opus:"anthropic/claude-opus-4.7"},needsApiKey:!0,websiteUrl:"https://www.shengsuanyun.com",apiKeyUrl:"https://www.shengsuanyun.com/?from=CH_LEJ88KWR",promoText:"\u80DC\u7B97\u4E91\u4E3A cc-haha \u7684\u7528\u6237\u63D0\u4F9B\u4E86\u7279\u522B\u798F\u5229\uFF0C\u4F7F\u7528\u6B64\u94FE\u63A5\u6CE8\u518C\u7684\u65B0\u7528\u6237\u53EF\u83B7 10 \u5143\u6A21\u529B\u53CA\u9996\u5145 10% \u8D60\u9001\uFF01",featured:!0,authStrategy:"auth_token",defaultEnv:{API_TIMEOUT_MS:"3000000",CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:"1",ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES:"none"},modelContextWindows:{"anthropic/claude-sonnet-4.6":1e6,"anthropic/claude-haiku-4.5:thinking":200000,"anthropic/claude-opus-4.7":1e6}},{id:"lmstudio",name:"LM Studio",baseUrl:"http://localhost:1234",apiFormat:"anthropic",defaultModels:{main:"qwen/qwen3.6-27b",haiku:"qwen/qwen3.6-27b",sonnet:"qwen/qwen3.6-27b",opus:"qwen/qwen3.6-27b"},needsApiKey:!1,websiteUrl:"https://lmstudio.ai/docs/integrations/claude-code",promoText:"LM Studio \u4F7F\u7528 Anthropic \u517C\u5BB9\u534F\u8BAE\uFF0CBase URL \u586B http://localhost:1234\uFF0C\u4E0D\u8981\u8FFD\u52A0 /v1\u3002Claude Code \u7684\u63D0\u793A\u8BCD\u3001\u5DE5\u5177\u548C Skill \u4F1A\u5360\u7528\u8F83\u591A\u4E0A\u4E0B\u6587\uFF0C\u8BF7\u5728\u672C\u5730\u6A21\u578B\u8BBE\u7F6E\u91CC\u628A Context Window \u8C03\u5927\uFF0C\u5EFA\u8BAE\u81F3\u5C11 200K\u3002",authStrategy:"auth_token_empty_api_key",defaultEnv:{ANTHROPIC_AUTH_TOKEN:"lmstudio"}},{id:"ollama",name:"Ollama",baseUrl:"http://localhost:11434",apiFormat:"anthropic",defaultModels:{main:"qwen3.6:27b",haiku:"qwen3.6:27b",sonnet:"qwen3.6:27b",opus:"qwen3.6:27b"},needsApiKey:!1,websiteUrl:"https://docs.ollama.com/integrations/claude-code",promoText:"Ollama \u4F7F\u7528 Anthropic \u517C\u5BB9\u534F\u8BAE\uFF0CBase URL \u586B http://localhost:11434\uFF0C\u4E0D\u8981\u8FFD\u52A0 /v1\u3002Claude Code \u7684\u63D0\u793A\u8BCD\u3001\u5DE5\u5177\u548C Skill \u4F1A\u5360\u7528\u8F83\u591A\u4E0A\u4E0B\u6587\uFF0C\u8BF7\u5728\u672C\u5730\u6A21\u578B\u8BBE\u7F6E\u91CC\u628A Context Window \u8C03\u5927\uFF0C\u5EFA\u8BAE\u81F3\u5C11 200K\u3002",authStrategy:"auth_token_empty_api_key",defaultEnv:{ANTHROPIC_AUTH_TOKEN:"ollama"}},{id:"custom",name:"Custom",baseUrl:"",apiFormat:"anthropic",defaultModels:{main:"",haiku:"",sonnet:"",opus:""},needsApiKey:!0,websiteUrl:"",authStrategy:"auth_token"}];import{z as f}from"zod";var K=f.enum(["anthropic","openai_chat","openai_responses"]),L=f.enum(["api_key","auth_token","auth_token_empty_api_key","dual_same_token","dual_dummy"]),j=f.enum(["anthropic_compatible","openai_oauth"]),Q=f.object({main:f.string(),haiku:f.string(),sonnet:f.string(),opus:f.string()}),$=f.number().int().min(16000).max(1e7),R=f.record(f.string().min(1),f.number().int().min(16000).max(1e7)),V0=f.object({id:f.string(),presetId:f.string(),name:f.string().min(1),apiKey:f.string(),authStrategy:L.optional(),baseUrl:f.string(),apiFormat:K.default("anthropic"),runtimeKind:j.default("anthropic_compatible"),models:Q,autoCompactWindow:$.optional(),modelContextWindows:R.optional(),notes:f.string().optional()}),P2=f.object({schemaVersion:f.number().int().positive().optional(),activeId:f.string().nullable(),providers:f.array(V0)}),I2=f.object({presetId:f.string().min(1),name:f.string().min(1),apiKey:f.string(),authStrategy:L.optional(),baseUrl:f.string(),apiFormat:K.default("anthropic"),runtimeKind:j.default("anthropic_compatible"),models:Q,autoCompactWindow:$.optional(),modelContextWindows:R.optional(),notes:f.string().optional()}),l2=f.object({name:f.string().min(1).optional(),apiKey:f.string().optional(),authStrategy:L.optional(),baseUrl:f.string().optional(),apiFormat:K.optional(),runtimeKind:j.optional(),models:Q.optional(),autoCompactWindow:$.nullable().optional(),modelContextWindows:R.nullable().optional(),notes:f.string().optional()}),w2=f.object({baseUrl:f.string().url(),apiKey:f.string().min(1),modelId:f.string().min(1),authStrategy:L.optional(),apiFormat:K.default("anthropic")});var E0=T.object({main:T.string(),haiku:T.string(),sonnet:T.string(),opus:T.string()}),O0=T.object({id:T.string().min(1),name:T.string().min(1),baseUrl:T.string(),apiFormat:K,defaultModels:E0,needsApiKey:T.boolean(),websiteUrl:T.string(),apiKeyUrl:T.string().optional(),promoText:T.string().optional(),featured:T.boolean().optional(),authStrategy:L.optional(),defaultEnv:T.record(T.string(),T.string()).optional(),modelContextWindows:T.record(T.string().min(1),T.number().int().min(16000).max(1e7)).optional()}),a0=T.array(O0),H=a0.parse(o);var S="CLAUDE_CODE_ATTRIBUTION_HEADER";function z0(h){return typeof h==="string"&&h.trim().toLowerCase().startsWith("claude")}function n(h){let U=h?.trim();if(!U)return{};return{["CLAUDE_CODE_ATTRIBUTION_HEADER"]:z0(U)?"1":"0"}}b0();d0();_0();t0();b0();import*as M from"fs/promises";import*as f0 from"os";import*as x from"path";var y=300000,o0=`<!doctype html>
2
+ import{Oa as I0,Pa as l0}from"./cli-asc9xmsr.js";import{ir as $0,jr as R0,kr as J2,pr as y0,qr as Z2}from"./cli-b3k8arn1.js";import{AZ as D,BW as z,BZ as Y,CZ as d,DZ as s,EZ as r,F1 as W2,FW as E,FZ as v,GZ as e,HZ as h0,IZ as U0,JZ as k0,KZ as b0,L0 as F0,LZ as p0,MZ as t0,NW as N0,P0 as X0,Q3 as Q0,SU as a,TU as W0,U0 as P0,UZ as i,VZ as _0,YU as A2,eY as A,fY as T0,gY as c0,hY as M0,jY as B0,kY as d0,mU as i0,oU as x2,u3 as G,x3 as _,zW as V,zZ as u0}from"./cli-192xnkcx.js";import{i5 as J0,j5 as q2,m5 as Z0,o5 as i2,w5 as G0,y5 as j0,z5 as N2}from"./cli-2428yw99.js";import{G8 as A0,L8 as g2}from"./cli-8kpqq0ea.js";import{Y9 as g0,d_ as Y2}from"./cli-awb77t95.js";import{H_ as J,K_ as q0,U_ as H2}from"./cli-q8zmmp6z.js";import{dda as D2,taa as O}from"./cli-tafg3e9w.js";Z2();import{readFileSync as G2}from"fs";import{join as j2}from"path";_0();import*as K0 from"fs";import*as L0 from"path";import{z as T}from"zod";var o=[{id:"official",name:"Claude Official",baseUrl:"",apiFormat:"anthropic",defaultModels:{main:"",haiku:"",sonnet:"",opus:""},needsApiKey:!1,websiteUrl:"https://www.anthropic.com/claude-code"},{id:"deepseek",name:"DeepSeek",baseUrl:"https://api.deepseek.com/anthropic",apiFormat:"anthropic",defaultModels:{main:"deepseek-v4-pro",haiku:"deepseek-v4-flash",sonnet:"deepseek-v4-pro",opus:"deepseek-v4-pro"},needsApiKey:!0,websiteUrl:"https://platform.deepseek.com",apiKeyUrl:"https://platform.deepseek.com/api_keys",authStrategy:"auth_token",defaultEnv:{ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES:"thinking,effort,adaptive_thinking,max_effort",ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES:"thinking,effort,adaptive_thinking,max_effort",ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES:"thinking,effort,adaptive_thinking,max_effort"},modelContextWindows:{"deepseek-v4-pro":1e6,"deepseek-v4-flash":1e6,"deepseek-chat":1e6,"deepseek-reasoner":1e6}},{id:"zhipuglm",name:"Zhipu GLM",baseUrl:"https://open.bigmodel.cn/api/anthropic",apiFormat:"anthropic",defaultModels:{main:"glm-5.1",haiku:"glm-4.5-air",sonnet:"glm-5-turbo",opus:"glm-5.1"},needsApiKey:!0,websiteUrl:"https://open.bigmodel.cn",apiKeyUrl:"https://www.bigmodel.cn/invite?icode=d41B2qi8Z5xNwTGLNPPF3OZLO2QH3C0EBTSr%2BArzMw4%3D",promoText:"\u667A\u8C31 GLM \u4E3A cc-haha \u7528\u6237\u51C6\u5907\u4E86\u4E13\u5C5E\u9080\u8BF7\u798F\u5229\uFF0C\u4F7F\u7528\u6B64\u94FE\u63A5\u6CE8\u518C\u540E\u53EF\u9886\u53D6\u65B0\u7528\u6237\u6743\u76CA\u3002",authStrategy:"auth_token",defaultEnv:{CC_HAHA_SEND_DISABLED_THINKING:"1"},modelContextWindows:{"glm-5.1":200000,"glm-5-turbo":200000,"glm-4.5-air":128000}},{id:"kimi",name:"Kimi",baseUrl:"https://api.kimi.com/coding",apiFormat:"anthropic",defaultModels:{main:"kimi-k2.6",haiku:"kimi-k2.6",sonnet:"kimi-k2.6",opus:"kimi-k2.6"},needsApiKey:!0,websiteUrl:"https://platform.moonshot.cn",apiKeyUrl:"https://platform.kimi.com/console/api-keys",authStrategy:"auth_token",defaultEnv:{CC_HAHA_SEND_DISABLED_THINKING:"1"},modelContextWindows:{"kimi-k2.6":262144,"kimi-k2.5":262144,"kimi-k2-0905-preview":262144,"kimi-k2-turbo-preview":262144,"kimi-k2-thinking":262144,"kimi-k2-thinking-turbo":262144}},{id:"minimax",name:"MiniMax",baseUrl:"https://api.minimaxi.com/anthropic",apiFormat:"anthropic",defaultModels:{main:"MiniMax-M2.7",haiku:"MiniMax-M2.7",sonnet:"MiniMax-M2.7",opus:"MiniMax-M2.7"},needsApiKey:!0,websiteUrl:"https://platform.minimaxi.com",apiKeyUrl:"https://platform.minimaxi.com/subscribe/token-plan?code=1TG2Cseab2&source=link",authStrategy:"auth_token",modelContextWindows:{"MiniMax-M2.7":204800,"MiniMax-M2.7-highspeed":204800,"MiniMax-M2.5":204800,"MiniMax-M2.5-highspeed":204800,"MiniMax-M2.1":204800,"MiniMax-M2.1-highspeed":204800,"MiniMax-M2":204800}},{id:"jiekouai",name:"\u63A5\u53E3AI",baseUrl:"https://api.jiekou.ai/anthropic",apiFormat:"anthropic",defaultModels:{main:"claude-sonnet-4-6",haiku:"claude-haiku-4-5-20251001",sonnet:"claude-sonnet-4-6",opus:"claude-opus-4-7"},needsApiKey:!0,websiteUrl:"https://jiekou.ai",apiKeyUrl:"https://jiekou.ai/referral?invited_code=OBNU3K",promoText:"\u63A5\u53E3AI\u4E3A cc-haha \u7684\u7528\u6237\u63D0\u4F9B\u5B98\u65B9\u8D44\u6E90\u4E0E\u7A33\u5B9A\u9AD8\u6027\u80FD\u4F53\u9A8C\uFF0C\u8BA2\u9605\u5305\u4EF7\u683C\u4E3A\u5B98\u65B9 8 \u6298\uFF1B\u7ED1\u5B9A GitHub \u540E\u8FD8\u53EF\u9886\u53D6 3 \u7F8E\u5143\u4F18\u60E0\u5238\u3002",featured:!0,authStrategy:"auth_token",defaultEnv:{ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES:"none"},modelContextWindows:{"claude-sonnet-4-6":1e6,"claude-haiku-4-5-20251001":200000,"claude-haiku-4-5":200000,"claude-opus-4-7":1e6}},{id:"shengsuanyun",name:"\u80DC\u7B97\u4E91",baseUrl:"https://router.shengsuanyun.com/api",apiFormat:"anthropic",defaultModels:{main:"anthropic/claude-sonnet-4.6",haiku:"anthropic/claude-haiku-4.5:thinking",sonnet:"anthropic/claude-sonnet-4.6",opus:"anthropic/claude-opus-4.7"},needsApiKey:!0,websiteUrl:"https://www.shengsuanyun.com",apiKeyUrl:"https://www.shengsuanyun.com/?from=CH_LEJ88KWR",promoText:"\u80DC\u7B97\u4E91\u4E3A cc-haha \u7684\u7528\u6237\u63D0\u4F9B\u4E86\u7279\u522B\u798F\u5229\uFF0C\u4F7F\u7528\u6B64\u94FE\u63A5\u6CE8\u518C\u7684\u65B0\u7528\u6237\u53EF\u83B7 10 \u5143\u6A21\u529B\u53CA\u9996\u5145 10% \u8D60\u9001\uFF01",featured:!0,authStrategy:"auth_token",defaultEnv:{API_TIMEOUT_MS:"3000000",CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:"1",ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES:"none"},modelContextWindows:{"anthropic/claude-sonnet-4.6":1e6,"anthropic/claude-haiku-4.5:thinking":200000,"anthropic/claude-opus-4.7":1e6}},{id:"lmstudio",name:"LM Studio",baseUrl:"http://localhost:1234",apiFormat:"anthropic",defaultModels:{main:"qwen/qwen3.6-27b",haiku:"qwen/qwen3.6-27b",sonnet:"qwen/qwen3.6-27b",opus:"qwen/qwen3.6-27b"},needsApiKey:!1,websiteUrl:"https://lmstudio.ai/docs/integrations/claude-code",promoText:"LM Studio \u4F7F\u7528 Anthropic \u517C\u5BB9\u534F\u8BAE\uFF0CBase URL \u586B http://localhost:1234\uFF0C\u4E0D\u8981\u8FFD\u52A0 /v1\u3002Claude Code \u7684\u63D0\u793A\u8BCD\u3001\u5DE5\u5177\u548C Skill \u4F1A\u5360\u7528\u8F83\u591A\u4E0A\u4E0B\u6587\uFF0C\u8BF7\u5728\u672C\u5730\u6A21\u578B\u8BBE\u7F6E\u91CC\u628A Context Window \u8C03\u5927\uFF0C\u5EFA\u8BAE\u81F3\u5C11 200K\u3002",authStrategy:"auth_token_empty_api_key",defaultEnv:{ANTHROPIC_AUTH_TOKEN:"lmstudio"}},{id:"ollama",name:"Ollama",baseUrl:"http://localhost:11434",apiFormat:"anthropic",defaultModels:{main:"qwen3.6:27b",haiku:"qwen3.6:27b",sonnet:"qwen3.6:27b",opus:"qwen3.6:27b"},needsApiKey:!1,websiteUrl:"https://docs.ollama.com/integrations/claude-code",promoText:"Ollama \u4F7F\u7528 Anthropic \u517C\u5BB9\u534F\u8BAE\uFF0CBase URL \u586B http://localhost:11434\uFF0C\u4E0D\u8981\u8FFD\u52A0 /v1\u3002Claude Code \u7684\u63D0\u793A\u8BCD\u3001\u5DE5\u5177\u548C Skill \u4F1A\u5360\u7528\u8F83\u591A\u4E0A\u4E0B\u6587\uFF0C\u8BF7\u5728\u672C\u5730\u6A21\u578B\u8BBE\u7F6E\u91CC\u628A Context Window \u8C03\u5927\uFF0C\u5EFA\u8BAE\u81F3\u5C11 200K\u3002",authStrategy:"auth_token_empty_api_key",defaultEnv:{ANTHROPIC_AUTH_TOKEN:"ollama"}},{id:"custom",name:"Custom",baseUrl:"",apiFormat:"anthropic",defaultModels:{main:"",haiku:"",sonnet:"",opus:""},needsApiKey:!0,websiteUrl:"",authStrategy:"auth_token"}];import{z as f}from"zod";var K=f.enum(["anthropic","openai_chat","openai_responses"]),L=f.enum(["api_key","auth_token","auth_token_empty_api_key","dual_same_token","dual_dummy"]),j=f.enum(["anthropic_compatible","openai_oauth"]),Q=f.object({main:f.string(),haiku:f.string(),sonnet:f.string(),opus:f.string()}),$=f.number().int().min(16000).max(1e7),R=f.record(f.string().min(1),f.number().int().min(16000).max(1e7)),V0=f.object({id:f.string(),presetId:f.string(),name:f.string().min(1),apiKey:f.string(),authStrategy:L.optional(),baseUrl:f.string(),apiFormat:K.default("anthropic"),runtimeKind:j.default("anthropic_compatible"),models:Q,autoCompactWindow:$.optional(),modelContextWindows:R.optional(),notes:f.string().optional()}),P2=f.object({schemaVersion:f.number().int().positive().optional(),activeId:f.string().nullable(),providers:f.array(V0)}),I2=f.object({presetId:f.string().min(1),name:f.string().min(1),apiKey:f.string(),authStrategy:L.optional(),baseUrl:f.string(),apiFormat:K.default("anthropic"),runtimeKind:j.default("anthropic_compatible"),models:Q,autoCompactWindow:$.optional(),modelContextWindows:R.optional(),notes:f.string().optional()}),l2=f.object({name:f.string().min(1).optional(),apiKey:f.string().optional(),authStrategy:L.optional(),baseUrl:f.string().optional(),apiFormat:K.optional(),runtimeKind:j.optional(),models:Q.optional(),autoCompactWindow:$.nullable().optional(),modelContextWindows:R.nullable().optional(),notes:f.string().optional()}),w2=f.object({baseUrl:f.string().url(),apiKey:f.string().min(1),modelId:f.string().min(1),authStrategy:L.optional(),apiFormat:K.default("anthropic")});var E0=T.object({main:T.string(),haiku:T.string(),sonnet:T.string(),opus:T.string()}),O0=T.object({id:T.string().min(1),name:T.string().min(1),baseUrl:T.string(),apiFormat:K,defaultModels:E0,needsApiKey:T.boolean(),websiteUrl:T.string(),apiKeyUrl:T.string().optional(),promoText:T.string().optional(),featured:T.boolean().optional(),authStrategy:L.optional(),defaultEnv:T.record(T.string(),T.string()).optional(),modelContextWindows:T.record(T.string().min(1),T.number().int().min(16000).max(1e7)).optional()}),a0=T.array(O0),H=a0.parse(o);var S="CLAUDE_CODE_ATTRIBUTION_HEADER";function z0(h){return typeof h==="string"&&h.trim().toLowerCase().startsWith("claude")}function n(h){let U=h?.trim();if(!U)return{};return{["CLAUDE_CODE_ATTRIBUTION_HEADER"]:z0(U)?"1":"0"}}b0();d0();_0();t0();b0();import*as M from"fs/promises";import*as f0 from"os";import*as x from"path";var y=300000,o0=`<!doctype html>
3
3
  <html><head><meta charset="utf-8"><title>OpenAI Login Success</title>
4
4
  <style>body{font-family:-apple-system,sans-serif;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;background:#fafafa;color:#333}.card{text-align:center;padding:40px;background:white;border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,.06)}h1{color:#16a34a;margin:0 0 12px}p{color:#666}</style>
5
5
  </head><body><div class="card"><h1>OpenAI Login Successful</h1><p>You can close this window and return to Claude Code Haha.</p></div>
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{Ta as Yq}from"./cli-tfv2qcgf.js";import{Em as zq,Gm as cq,Hv as Jq,Iv as dq,Jx as w,KH as Zq,Kx as uq,LH as $q,MH as Bq,Nm as Gq,OI as nq,Om as Aq,Pj as b,RJ as a,SG as u,TG as i,VE as oq,Vj as mq,Wz as Xq,Xv as Kq,Zv as pq,Zz as aq,_x as y,ay as d,bH as Iq,bK as Nq,by as p,dK as D,dy as Fq,eI as Vq,eK as k,ew as v,fj as qq,fy as Qq,ij as _,jw as gq,ky as iq,mI as L,nj as fq,vC as g,xK as rq,yC as Mq,yJ as l}from"./cli-me4e2p3e.js";import{KL as Sq}from"./cli-49m97nbg.js";import{OL as x,PL as lq}from"./cli-r83ttew2.js";import{kM as Hq,zM as hq}from"./cli-d0hzw78c.js";import{lZ as e,rZ as Pq}from"./cli-msmzt4c3.js";import{L7 as T,M7 as Cq}from"./cli-rvad3yhg.js";import{Y8 as S,Z8 as Uq}from"./cli-t9jht3kb.js";import{K9 as c,M9 as jq,l_ as A,p_ as Eq,v_ as B,y_ as h}from"./cli-hke6r0q8.js";import{Aca as F,Ica as f,bda as m,c$ as P,d$ as Rq,e$ as n,h$ as r,m$ as O,paa as s,raa as t}from"./cli-3ac555qw.js";m();Iq();Uq();Fq();Mq();jq();h();Eq();Nq();Rq();import Wq from"chokidar";import*as $ from"path";var _q=1000,Lq=500,Oq=300,Tq=2000,bq=typeof Bun<"u",X=null,Z=null,R=new Set,N=!1,W=!1,C=!1,E=null,j=P(),U=null;async function vq(){if(N||W)return;if(N=!0,!C)C=!0,p(()=>{u(),j.emit()});let q=await xq();if(q.length===0)return;B(`Watching for changes in skill/command directories: ${q.join(", ")}...`),X=Wq.watch(q,{persistent:!0,ignoreInitial:!0,depth:2,awaitWriteFinish:{stabilityThreshold:U?.stabilityThreshold??_q,pollInterval:U?.pollInterval??Lq},ignored:(z,G)=>{if(G&&!G.isFile()&&!G.isDirectory())return!0;return z.split($.sep).some((H)=>H===".git")},ignorePermissionErrors:!0,usePolling:bq,interval:U?.chokidarInterval??Tq,atomic:!0}),X.on("add",I),X.on("change",I),X.on("unlink",I),E=c(async()=>{await o()})}function o(){if(W=!0,E)E(),E=null;let q=Promise.resolve();if(X)q=X.close(),X=null;if(Z)clearTimeout(Z),Z=null;return R.clear(),j.clear(),q}var wq=j.subscribe;async function xq(){let q=A(),z=[],G=y("userSettings","skills");if(G)try{await q.stat(G),z.push(G)}catch{}let H=y("userSettings","commands");if(H)try{await q.stat(H),z.push(H)}catch{}let J=y("projectSettings","skills");if(J)try{let K=$.resolve(J);await q.stat(K),z.push(K)}catch{}let Q=y("projectSettings","commands");if(Q)try{let K=$.resolve(Q);await q.stat(K),z.push(K)}catch{}for(let K of f()){let Y=$.join(K,".claude","skills");try{await q.stat(Y),z.push(Y)}catch{}}return z}function I(q){B(`Detected skill change: ${q}`),S("tengu_skill_file_changed",{source:"chokidar"}),Dq(q)}function Dq(q){if(R.add(q),Z)clearTimeout(Z);Z=setTimeout(async()=>{Z=null;let z=[...R];R.clear();let G=await a("skills",z[0]);if(l(G)){B(`ConfigChange hook blocked skill reload (${z.length} paths)`);return}d(),i(),g(),j.emit()},U?.reloadDebounce??Oq)}async function kq(q){if(X)await X.close(),X=null;if(Z)clearTimeout(Z),Z=null;R.clear(),j.clear(),N=!1,W=!1,U=q??null}var Uz={initialize:vq,dispose:o,subscribe:wq,resetForTesting:kq};m();lq();iq();fq();Aq();cq();import{dirname as sq}from"path";mq();Sq();aq();Cq();h();pq();oq();Pq();gq();uq();nq();hq();dq();rq();function tq(q){for(let z=q.length-1;z>=0;z--){let G=q[z];if(G?.type!=="assistant")continue;let H=G.message.content.find((K)=>K.type==="tool_use"&&K.name===Gq);if(!H||H.type!=="tool_use")continue;let J=H.input;if(J===null||typeof J!=="object")return[];let Q=Jq().safeParse(J.todos);return Q.success?Q.data:[]}return[]}function gz(q,z){if(q.fileHistorySnapshots&&q.fileHistorySnapshots.length>0)Kq(q.fileHistorySnapshots,(G)=>{z((H)=>({...H,fileHistory:G}))});if(!Hq()&&q.messages&&q.messages.length>0){let G=tq(q.messages);if(G.length>0){let H=n();z((J)=>({...J,todos:{...J.todos,[H]:G}}))}}}function eq(q){return}function qz(q,z){if(!q&&!z)return;return{name:q??"",color:z==="default"?void 0:z}}function zz(q,z,G){if(z)return{agentDefinition:z,agentType:void 0};if(!q)return F(void 0),{agentDefinition:void 0,agentType:void 0};let H=G.activeAgents.find((J)=>J.agentType===q);if(!H)return B(`Resumed session had agent "${q}" but it is no longer available. Using default behavior.`),F(void 0),{agentDefinition:void 0,agentType:void 0};if(F(H.agentType),!s()&&H.model&&H.model!=="inherit")t(e(H.model));return{agentDefinition:H,agentType:H.agentType}}async function Gz(q,z,G,H){return H}function Hz(q){let z=D();if(z){L(z);return}if(!q)return;try{process.chdir(q.worktreePath)}catch{L(null);return}w(q.worktreePath),O(T()),k(q),b(),x(),v.cache.clear?.()}function uz(){let q=D();if(!q)return;k(null),b(),x(),v.cache.clear?.();try{process.chdir(q.originalCwd)}catch{return}w(q.originalCwd),O(T())}async function iz(q,z,G){let H;if(!z.forkSession){let M=z.sessionIdOverride??q.sessionId;if(M)r(zq(M),z.transcriptPath?sq(z.transcriptPath):null),await Yq(),await $q(),Qq(M)}else if(q.contentReplacements?.length)await Zq(q.contentReplacements);if(Vq(z.forkSession?{...q,worktreeSession:void 0}:q),!z.forkSession)Hz(q.worktreeSession),Bq();let{agentDefinition:J,agentType:Q}=zz(q.agentSetting,G.mainThreadAgentDefinition,G.agentDefinitions),K=z.includeAttribution?eq(q):void 0,Y=qz(q.agentName,q.agentColor);Xq(q.agentName);let yq=await Gz(!!H,G.currentCwd,G.cliAgents,G.agentDefinitions);return{messages:q.messages,fileHistorySnapshots:q.fileHistorySnapshots,contentReplacements:q.contentReplacements,agentName:q.agentName,agentColor:q.agentColor==="default"?void 0:q.agentColor,restoredAgentDef:J,initialState:{...G.initialState,...Q&&{agent:Q},...K&&{attribution:K},...Y&&{standaloneAgentContext:Y},agentDefinitions:yq}}}
2
+ import{Ta as Yq}from"./cli-gypyp608.js";import{Em as zq,Gm as cq,Hv as Jq,Iv as dq,Jx as w,KH as Zq,Kx as uq,LH as $q,MH as Bq,Nm as Gq,OI as nq,Om as Aq,Pj as b,RJ as a,SG as u,TG as i,VE as oq,Vj as mq,Wz as Xq,Xv as Kq,Zv as pq,Zz as aq,_x as y,ay as d,bH as Iq,bK as Nq,by as p,dK as D,dy as Fq,eI as Vq,eK as k,ew as v,fj as qq,fy as Qq,ij as _,jw as gq,ky as iq,mI as L,nj as fq,vC as g,xK as rq,yC as Mq,yJ as l}from"./cli-b3k8arn1.js";import{KL as Sq}from"./cli-7ed2q42n.js";import{OL as x,PL as lq}from"./cli-n5wt59z1.js";import{kM as Hq,zM as hq}from"./cli-ez2xsd4m.js";import{lZ as e,rZ as Pq}from"./cli-192xnkcx.js";import{N7 as T,O7 as Cq}from"./cli-fnt125we.js";import{$8 as Uq,_8 as S}from"./cli-e5yek4vx.js";import{A_ as h,M9 as c,O9 as jq,n_ as A,r_ as Eq,x_ as B}from"./cli-awb77t95.js";import{Cca as F,Kca as f,dda as m,e$ as P,f$ as Rq,g$ as n,j$ as r,o$ as O,raa as s,taa as t}from"./cli-tafg3e9w.js";m();Iq();Uq();Fq();Mq();jq();h();Eq();Nq();Rq();import Wq from"chokidar";import*as $ from"path";var _q=1000,Lq=500,Oq=300,Tq=2000,bq=typeof Bun<"u",X=null,Z=null,R=new Set,N=!1,W=!1,C=!1,E=null,j=P(),U=null;async function vq(){if(N||W)return;if(N=!0,!C)C=!0,p(()=>{u(),j.emit()});let q=await xq();if(q.length===0)return;B(`Watching for changes in skill/command directories: ${q.join(", ")}...`),X=Wq.watch(q,{persistent:!0,ignoreInitial:!0,depth:2,awaitWriteFinish:{stabilityThreshold:U?.stabilityThreshold??_q,pollInterval:U?.pollInterval??Lq},ignored:(z,G)=>{if(G&&!G.isFile()&&!G.isDirectory())return!0;return z.split($.sep).some((H)=>H===".git")},ignorePermissionErrors:!0,usePolling:bq,interval:U?.chokidarInterval??Tq,atomic:!0}),X.on("add",I),X.on("change",I),X.on("unlink",I),E=c(async()=>{await o()})}function o(){if(W=!0,E)E(),E=null;let q=Promise.resolve();if(X)q=X.close(),X=null;if(Z)clearTimeout(Z),Z=null;return R.clear(),j.clear(),q}var wq=j.subscribe;async function xq(){let q=A(),z=[],G=y("userSettings","skills");if(G)try{await q.stat(G),z.push(G)}catch{}let H=y("userSettings","commands");if(H)try{await q.stat(H),z.push(H)}catch{}let J=y("projectSettings","skills");if(J)try{let K=$.resolve(J);await q.stat(K),z.push(K)}catch{}let Q=y("projectSettings","commands");if(Q)try{let K=$.resolve(Q);await q.stat(K),z.push(K)}catch{}for(let K of f()){let Y=$.join(K,".claude","skills");try{await q.stat(Y),z.push(Y)}catch{}}return z}function I(q){B(`Detected skill change: ${q}`),S("tengu_skill_file_changed",{source:"chokidar"}),Dq(q)}function Dq(q){if(R.add(q),Z)clearTimeout(Z);Z=setTimeout(async()=>{Z=null;let z=[...R];R.clear();let G=await a("skills",z[0]);if(l(G)){B(`ConfigChange hook blocked skill reload (${z.length} paths)`);return}d(),i(),g(),j.emit()},U?.reloadDebounce??Oq)}async function kq(q){if(X)await X.close(),X=null;if(Z)clearTimeout(Z),Z=null;R.clear(),j.clear(),N=!1,W=!1,U=q??null}var Uz={initialize:vq,dispose:o,subscribe:wq,resetForTesting:kq};m();lq();iq();fq();Aq();cq();import{dirname as sq}from"path";mq();Sq();aq();Cq();h();pq();oq();Pq();gq();uq();nq();hq();dq();rq();function tq(q){for(let z=q.length-1;z>=0;z--){let G=q[z];if(G?.type!=="assistant")continue;let H=G.message.content.find((K)=>K.type==="tool_use"&&K.name===Gq);if(!H||H.type!=="tool_use")continue;let J=H.input;if(J===null||typeof J!=="object")return[];let Q=Jq().safeParse(J.todos);return Q.success?Q.data:[]}return[]}function gz(q,z){if(q.fileHistorySnapshots&&q.fileHistorySnapshots.length>0)Kq(q.fileHistorySnapshots,(G)=>{z((H)=>({...H,fileHistory:G}))});if(!Hq()&&q.messages&&q.messages.length>0){let G=tq(q.messages);if(G.length>0){let H=n();z((J)=>({...J,todos:{...J.todos,[H]:G}}))}}}function eq(q){return}function qz(q,z){if(!q&&!z)return;return{name:q??"",color:z==="default"?void 0:z}}function zz(q,z,G){if(z)return{agentDefinition:z,agentType:void 0};if(!q)return F(void 0),{agentDefinition:void 0,agentType:void 0};let H=G.activeAgents.find((J)=>J.agentType===q);if(!H)return B(`Resumed session had agent "${q}" but it is no longer available. Using default behavior.`),F(void 0),{agentDefinition:void 0,agentType:void 0};if(F(H.agentType),!s()&&H.model&&H.model!=="inherit")t(e(H.model));return{agentDefinition:H,agentType:H.agentType}}async function Gz(q,z,G,H){return H}function Hz(q){let z=D();if(z){L(z);return}if(!q)return;try{process.chdir(q.worktreePath)}catch{L(null);return}w(q.worktreePath),O(T()),k(q),b(),x(),v.cache.clear?.()}function uz(){let q=D();if(!q)return;k(null),b(),x(),v.cache.clear?.();try{process.chdir(q.originalCwd)}catch{return}w(q.originalCwd),O(T())}async function iz(q,z,G){let H;if(!z.forkSession){let M=z.sessionIdOverride??q.sessionId;if(M)r(zq(M),z.transcriptPath?sq(z.transcriptPath):null),await Yq(),await $q(),Qq(M)}else if(q.contentReplacements?.length)await Zq(q.contentReplacements);if(Vq(z.forkSession?{...q,worktreeSession:void 0}:q),!z.forkSession)Hz(q.worktreeSession),Bq();let{agentDefinition:J,agentType:Q}=zz(q.agentSetting,G.mainThreadAgentDefinition,G.agentDefinitions),K=z.includeAttribution?eq(q):void 0,Y=qz(q.agentName,q.agentColor);Xq(q.agentName);let yq=await Gz(!!H,G.currentCwd,G.cliAgents,G.agentDefinitions);return{messages:q.messages,fileHistorySnapshots:q.fileHistorySnapshots,contentReplacements:q.contentReplacements,agentName:q.agentName,agentColor:q.agentColor==="default"?void 0:q.agentColor,restoredAgentDef:J,initialState:{...G.initialState,...Q&&{agent:Q},...K&&{attribution:K},...Y&&{standaloneAgentContext:Y},agentDefinitions:yq}}}
3
3
  export{Uz as ra,gz as sa,qz as ta,zz as ua,Hz as va,uz as wa,iz as xa};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{Dca as k,Eca as q,Fca as w,_ca as x,bda as A}from"./cli-3ac555qw.js";import{fda as z}from"./cli-w1d8n9g3.js";function G(g,b){return{name:g,compute:b,cacheBreak:!1}}function I(g,b,f){return{name:g,compute:b,cacheBreak:!0}}async function J(g){let b=k();return Promise.all(g.map(async(f)=>{if(!f.cacheBreak&&b.has(f.name))return b.get(f.name)??null;let j=await f.compute();return q(f.name,j),j}))}function K(){w(),x()}var D=z(()=>{A()});
2
+ import{Fca as k,Gca as q,Hca as w,ada as x,dda as A}from"./cli-tafg3e9w.js";import{hda as z}from"./cli-qwx84m9c.js";function G(g,b){return{name:g,compute:b,cacheBreak:!1}}function I(g,b,f){return{name:g,compute:b,cacheBreak:!0}}async function J(g){let b=k();return Promise.all(g.map(async(f)=>{if(!f.cacheBreak&&b.has(f.name))return b.get(f.name)??null;let j=await f.compute();return q(f.name,j),j}))}function K(){w(),x()}var D=z(()=>{A()});
3
3
  export{G as LL,I as ML,J as NL,K as OL,D as PL};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{$f as q,ag as k}from"./cli-6bxfdgv1.js";import{kg as f,lg as z}from"./cli-sh9w2tbd.js";import{fda as O}from"./cli-w1d8n9g3.js";import{jsxDEV as P}from"react/jsx-dev-runtime";async function Y(_,K){let $=await f();if($.type==="message")return _($.value),null;return P(q,{startingMessage:"Starting new login following /extra-usage. Exit with Ctrl-C to use existing account.",onDone:(r)=>{K.onChangeAPIKey(),_(r?"Login successful":"Login interrupted")}},void 0,!1,void 0,this)}var w=O(()=>{k();z()});
2
+ import{$f as q,ag as k}from"./cli-9tbmrp89.js";import{kg as f,lg as z}from"./cli-a1cx6p3g.js";import{hda as O}from"./cli-qwx84m9c.js";import{jsxDEV as P}from"react/jsx-dev-runtime";async function Y(_,K){let $=await f();if($.type==="message")return _($.value),null;return P(q,{startingMessage:"Starting new login following /extra-usage. Exit with Ctrl-C to use existing account.",onDone:(r)=>{K.onChangeAPIKey(),_(r?"Login successful":"Login interrupted")}},void 0,!1,void 0,this)}var w=O(()=>{k();z()});
3
3
  export{Y as Yf,w as Zf};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{MK as a,NK as E,PK as r,QK as o,RK as s,WK as KQ}from"./cli-s9fhtgmz.js";import{G1 as N,H1 as t}from"./cli-msmzt4c3.js";import{s5 as n,z5 as JQ}from"./cli-f63fdj4w.js";import{D5 as U,E5 as I}from"./cli-pgg33dhw.js";import{O6 as Y,Q6 as h}from"./cli-fdya77ch.js";import{Y8 as u,Z8 as WQ}from"./cli-t9jht3kb.js";import{X9 as H,Y9 as i,b_ as F,d_ as k,e_ as R,h_ as y,v_ as K,y_ as b}from"./cli-hke6r0q8.js";WQ();b();h();F();y();function D(Q){if(Q<60000)return`${Math.round(Q/1000)}s`;let W=Math.floor(Q/60000),Z=Math.round(Q%60000/1000);return Z>0?`${W}m ${Z}s`:`${W}m`}function ZQ(Q){let Z=(Q.startsWith("sk-ant-si-")?Q.slice(10):Q).split(".");if(Z.length!==3||!Z[1])return null;try{return R(Buffer.from(Z[1],"base64url").toString("utf8"))}catch{return null}}function f(Q){let W=ZQ(Q);if(W!==null&&typeof W==="object"&&"exp"in W&&typeof W.exp==="number")return W.exp;return null}var $Q=300000,p=1800000,m=3,zQ=60000;function DQ({getAccessToken:Q,onRefresh:W,label:Z,refreshBufferMs:z=$Q}){let $=new Map,J=new Map,G=new Map;function X(V){let w=(G.get(V)??0)+1;return G.set(V,w),w}function q(V,w){let j=f(w);if(!j){K(`[${Z}:token] Could not decode JWT expiry for sessionId=${V}, token prefix=${w.slice(0,15)}\u2026, keeping existing timer`);return}let C=$.get(V);if(C)clearTimeout(C);let B=X(V),P=new Date(j*1000).toISOString(),v=j*1000-Date.now()-z;if(v<=0){K(`[${Z}:token] Token for sessionId=${V} expires=${P} (past or within buffer), refreshing immediately`),O(V,B);return}K(`[${Z}:token] Scheduled token refresh for sessionId=${V} in ${D(v)} (expires=${P}, buffer=${z/1000}s)`);let QQ=setTimeout(O,v,V,B);$.set(V,QQ)}function L(V,w){let j=$.get(V);if(j)clearTimeout(j);let C=X(V),B=Math.max(w*1000-z,30000);K(`[${Z}:token] Scheduled token refresh for sessionId=${V} in ${D(B)} (expires_in=${w}s, buffer=${z/1000}s)`);let P=setTimeout(O,B,V,C);$.set(V,P)}async function O(V,w){let j;try{j=await Q()}catch(B){K(`[${Z}:token] getAccessToken threw for sessionId=${V}: ${H(B)}`,{level:"error"})}if(G.get(V)!==w){K(`[${Z}:token] doRefresh for sessionId=${V} stale (gen ${w} vs ${G.get(V)}), skipping`);return}if(!j){let B=(J.get(V)??0)+1;if(J.set(V,B),K(`[${Z}:token] No OAuth token available for refresh, sessionId=${V} (failure ${B}/${m})`,{level:"error"}),Y("error","bridge_token_refresh_no_oauth"),B<m){let P=setTimeout(O,zQ,V,w);$.set(V,P)}return}J.delete(V),K(`[${Z}:token] Refreshing token for sessionId=${V}: new token prefix=${j.slice(0,15)}\u2026`),u("tengu_bridge_token_refreshed",{}),W(V,j);let C=setTimeout(O,p,V,w);$.set(V,C),K(`[${Z}:token] Scheduled follow-up refresh for sessionId=${V} in ${D(p)}`)}function _(V){X(V);let w=$.get(V);if(w)clearTimeout(w),$.delete(V);J.delete(V)}function e(){for(let V of G.keys())X(V);for(let V of $.values())clearTimeout(V);$.clear(),J.clear()}return{schedule:q,scheduleFromExpiresIn:L,cancel:_,cancelAll:e}}import{randomUUID as g}from"crypto";b();h();F();JQ();KQ();r();I();t();y();class T extends Error{retryAfterMs;constructor(Q,W){super(Q);this.retryAfterMs=W}}class x{pending=[];pendingAtClose=0;draining=!1;closed=!1;backpressureResolvers=[];sleepResolve=null;flushResolvers=[];droppedBatches=0;config;constructor(Q){this.config=Q}get droppedBatchCount(){return this.droppedBatches}get pendingCount(){return this.closed?this.pendingAtClose:this.pending.length}async enqueue(Q){if(this.closed)return;let W=Array.isArray(Q)?Q:[Q];if(W.length===0)return;while(this.pending.length+W.length>this.config.maxQueueSize&&!this.closed)await new Promise((Z)=>{this.backpressureResolvers.push(Z)});if(this.closed)return;this.pending.push(...W),this.drain()}flush(){if(this.pending.length===0&&!this.draining)return Promise.resolve();return this.drain(),new Promise((Q)=>{this.flushResolvers.push(Q)})}close(){if(this.closed)return;this.closed=!0,this.pendingAtClose=this.pending.length,this.pending=[],this.sleepResolve?.(),this.sleepResolve=null;for(let Q of this.backpressureResolvers)Q();this.backpressureResolvers=[];for(let Q of this.flushResolvers)Q();this.flushResolvers=[]}async drain(){if(this.draining||this.closed)return;this.draining=!0;let Q=0;try{while(this.pending.length>0&&!this.closed){let W=this.takeBatch();if(W.length===0)continue;try{await this.config.send(W),Q=0}catch(Z){if(Q++,this.config.maxConsecutiveFailures!==void 0&&Q>=this.config.maxConsecutiveFailures){this.droppedBatches++,this.config.onBatchDropped?.(W.length,Q),Q=0,this.releaseBackpressure();continue}this.pending=W.concat(this.pending);let z=Z instanceof T?Z.retryAfterMs:void 0;await this.sleep(this.retryDelay(Q,z));continue}this.releaseBackpressure()}}finally{if(this.draining=!1,this.pending.length===0){for(let W of this.flushResolvers)W();this.flushResolvers=[]}}}takeBatch(){let{maxBatchSize:Q,maxBatchBytes:W}=this.config;if(W===void 0)return this.pending.splice(0,Q);let Z=0,z=0;while(z<this.pending.length&&z<Q){let $;try{$=Buffer.byteLength(k(this.pending[z]))}catch{this.pending.splice(z,1);continue}if(z>0&&Z+$>W)break;Z+=$,z++}return this.pending.splice(0,z)}retryDelay(Q,W){let Z=Math.random()*this.config.jitterMs;if(W!==void 0)return Math.max(this.config.baseDelayMs,Math.min(W,this.config.maxDelayMs))+Z;return Math.min(this.config.baseDelayMs*2**(Q-1),this.config.maxDelayMs)+Z}releaseBackpressure(){let Q=this.backpressureResolvers;this.backpressureResolvers=[];for(let W of Q)W()}sleep(Q){return new Promise((W)=>{this.sleepResolve=W,setTimeout((Z,z)=>{Z.sleepResolve=null,z()},Q,this,W)})}}I();class c{inflight=null;pending=null;closed=!1;config;constructor(Q){this.config=Q}enqueue(Q){if(this.closed)return;this.pending=this.pending?d(this.pending,Q):Q,this.drain()}close(){this.closed=!0,this.pending=null}async drain(){if(this.inflight||this.closed)return;if(!this.pending)return;let Q=this.pending;this.pending=null,this.inflight=this.sendWithRetry(Q).then(()=>{if(this.inflight=null,this.pending&&!this.closed)this.drain()})}async sendWithRetry(Q){let W=Q,Z=0;while(!this.closed){if(await this.config.send(W))return;if(Z++,await U(this.retryDelay(Z)),this.pending&&!this.closed)W=d(W,this.pending),this.pending=null}}retryDelay(Q){let W=Math.min(this.config.baseDelayMs*2**(Q-1),this.config.maxDelayMs),Z=Math.random()*this.config.jitterMs;return W+Z}}function d(Q,W){let Z={...Q};for(let[z,$]of Object.entries(W))if((z==="external_metadata"||z==="internal_metadata")&&Z[z]&&typeof Z[z]==="object"&&typeof $==="object"&&$!==null)Z[z]={...Z[z],...$};else Z[z]=$;return Z}var GQ=20000,VQ=100;function l(){return!0}class M extends Error{reason;constructor(Q){super(`CCRClient init failed: ${Q}`);this.reason=Q}}var YQ=10;function XQ(){return{byMessage:new Map,scopeToMessage:new Map}}function S(Q){return`${Q.session_id}:${Q.parent_tool_use_id??""}`}function qQ(Q,W){let Z=[],z=new Map;for(let $ of Q)switch($.event.type){case"message_start":{let J=$.event.message.id,G=W.scopeToMessage.get(S($));if(G)W.byMessage.delete(G);W.scopeToMessage.set(S($),J),W.byMessage.set(J,[]),Z.push($);break}case"content_block_delta":{if($.event.delta.type!=="text_delta"){Z.push($);break}let J=W.scopeToMessage.get(S($)),G=J?W.byMessage.get(J):void 0;if(!G){Z.push($);break}let X=G[$.event.index]??=[];X.push($.event.delta.text);let q=z.get(X);if(q){q.event.delta.text=X.join("");break}let L={type:"stream_event",uuid:$.uuid,session_id:$.session_id,parent_tool_use_id:$.parent_tool_use_id,event:{type:"content_block_delta",index:$.event.index,delta:{type:"text_delta",text:X.join("")}}};z.set(X,L),Z.push(L);break}default:Z.push($)}return Z}function wQ(Q,W){Q.byMessage.delete(W.message.id);let Z=S(W);if(Q.scopeToMessage.get(Z)===W.message.id)Q.scopeToMessage.delete(Z)}class LQ{workerEpoch=0;heartbeatIntervalMs;heartbeatJitterFraction;heartbeatTimer=null;heartbeatInFlight=!1;closed=!1;consecutiveAuthFailures=0;currentState=null;sessionBaseUrl;sessionId;http=n({keepAlive:!0});streamEventBuffer=[];streamEventTimer=null;streamTextAccumulator=XQ();workerState;eventUploader;internalEventUploader;deliveryUploader;onEpochMismatch;getAuthHeaders;constructor(Q,W,Z){if(this.onEpochMismatch=Z?.onEpochMismatch??(()=>{process.exit(1)}),this.heartbeatIntervalMs=Z?.heartbeatIntervalMs??GQ,this.heartbeatJitterFraction=Z?.heartbeatJitterFraction??0,this.getAuthHeaders=Z?.getAuthHeaders??E,W.protocol!=="http:"&&W.protocol!=="https:")throw Error(`CCRClient: Expected http(s) URL, got ${W.protocol}`);let z=W.pathname.replace(/\/$/,"");this.sessionBaseUrl=`${W.protocol}//${W.host}${z}`,this.sessionId=z.split("/").pop()||"",this.workerState=new c({send:($)=>this.request("put","/worker",{worker_epoch:this.workerEpoch,...$},"PUT worker").then((J)=>J.ok),baseDelayMs:500,maxDelayMs:30000,jitterMs:500}),this.eventUploader=new x({maxBatchSize:100,maxBatchBytes:10485760,maxQueueSize:1e5,send:async($)=>{let J=await this.request("post","/worker/events",{worker_epoch:this.workerEpoch,events:$},"client events");if(!J.ok)throw new T("client event POST failed",J.retryAfterMs)},baseDelayMs:500,maxDelayMs:30000,jitterMs:500}),this.internalEventUploader=new x({maxBatchSize:100,maxBatchBytes:10485760,maxQueueSize:200,send:async($)=>{let J=await this.request("post","/worker/internal-events",{worker_epoch:this.workerEpoch,events:$},"internal events");if(!J.ok)throw new T("internal event POST failed",J.retryAfterMs)},baseDelayMs:500,maxDelayMs:30000,jitterMs:500}),this.deliveryUploader=new x({maxBatchSize:64,maxQueueSize:64,send:async($)=>{let J=await this.request("post","/worker/events/delivery",{worker_epoch:this.workerEpoch,updates:$.map((G)=>({event_id:G.eventId,status:G.status}))},"delivery batch");if(!J.ok)throw new T("delivery POST failed",J.retryAfterMs)},baseDelayMs:500,maxDelayMs:30000,jitterMs:500}),Q.setOnEvent(($)=>{this.reportDelivery($.event_id,"received")})}async initialize(Q){let W=Date.now();if(Object.keys(this.getAuthHeaders()).length===0)throw new M("no_auth_headers");if(Q===void 0){let G=process.env.CLAUDE_CODE_WORKER_EPOCH;Q=G?parseInt(G,10):NaN}if(isNaN(Q))throw new M("missing_epoch");this.workerEpoch=Q;let Z=this.getWorkerState();if(!(await this.request("put","/worker",{worker_status:"idle",worker_epoch:this.workerEpoch,external_metadata:{pending_action:null,task_summary:null}},"PUT worker (init)")).ok)throw new M("worker_register_failed");this.currentState="idle",this.startHeartbeat(),o(()=>{this.writeEvent({type:"keep_alive"})}),K(`CCRClient: initialized, epoch=${this.workerEpoch}`),Y("info","cli_worker_lifecycle_initialized",{epoch:this.workerEpoch,duration_ms:Date.now()-W});let{metadata:$,durationMs:J}=await Z;if(!this.closed)Y("info","cli_worker_state_restored",{duration_ms:J,had_state:$!==null});return $}async getWorkerState(){let Q=Date.now(),W=this.getAuthHeaders();if(Object.keys(W).length===0)return{metadata:null,durationMs:0};return{metadata:(await this.getWithRetry(`${this.sessionBaseUrl}/worker`,W,"worker_state"))?.worker?.external_metadata??null,durationMs:Date.now()-Q}}async request(Q,W,Z,z,{timeout:$=1e4}={}){let J=this.getAuthHeaders();if(Object.keys(J).length===0)return{ok:!1};try{let G=await this.http[Q](`${this.sessionBaseUrl}${W}`,Z,{headers:{...J,"Content-Type":"application/json","anthropic-version":"2023-06-01","User-Agent":N()},validateStatus:l,timeout:$});if(G.status>=200&&G.status<300)return this.consecutiveAuthFailures=0,{ok:!0};if(G.status===409)this.handleEpochMismatch();if(G.status===401||G.status===403){let X=a(),q=X?f(X):null;if(q!==null&&q*1000<Date.now())K(`CCRClient: session_token expired (exp=${new Date(q*1000).toISOString()}) \u2014 no refresh was delivered, exiting`,{level:"error"}),Y("error","cli_worker_token_expired_no_refresh"),this.onEpochMismatch();if(this.consecutiveAuthFailures++,this.consecutiveAuthFailures>=YQ)K(`CCRClient: ${this.consecutiveAuthFailures} consecutive auth failures with a valid-looking token \u2014 server-side auth unrecoverable, exiting`,{level:"error"}),Y("error","cli_worker_auth_failures_exhausted"),this.onEpochMismatch()}if(K(`CCRClient: ${z} returned ${G.status}`,{level:"warn"}),Y("warn","cli_worker_request_failed",{method:Q,path:W,status:G.status}),G.status===429){let X=G.headers?.["retry-after"],q=typeof X==="string"?parseInt(X,10):NaN;if(!isNaN(q)&&q>=0)return{ok:!1,retryAfterMs:q*1000}}return{ok:!1}}catch(G){return K(`CCRClient: ${z} failed: ${H(G)}`,{level:"warn"}),Y("warn","cli_worker_request_error",{method:Q,path:W,error_code:i(G)}),{ok:!1}}}reportState(Q,W){if(Q===this.currentState&&!W)return;this.currentState=Q,this.workerState.enqueue({worker_status:Q,requires_action_details:W?{tool_name:W.tool_name,action_description:W.action_description,request_id:W.request_id}:null})}reportMetadata(Q){this.workerState.enqueue({external_metadata:Q})}handleEpochMismatch(){K("CCRClient: Epoch mismatch (409), shutting down",{level:"error"}),Y("error","cli_worker_epoch_mismatch"),this.onEpochMismatch()}startHeartbeat(){this.stopHeartbeat();let Q=()=>{let Z=this.heartbeatIntervalMs*this.heartbeatJitterFraction*(2*Math.random()-1);this.heartbeatTimer=setTimeout(W,this.heartbeatIntervalMs+Z)},W=()=>{if(this.sendHeartbeat(),this.heartbeatTimer===null)return;Q()};Q()}stopHeartbeat(){if(this.heartbeatTimer)clearTimeout(this.heartbeatTimer),this.heartbeatTimer=null}async sendHeartbeat(){if(this.heartbeatInFlight)return;this.heartbeatInFlight=!0;try{if((await this.request("post","/worker/heartbeat",{session_id:this.sessionId,worker_epoch:this.workerEpoch},"Heartbeat",{timeout:5000})).ok)K("CCRClient: Heartbeat sent")}finally{this.heartbeatInFlight=!1}}async writeEvent(Q){if(Q.type==="stream_event"){if(this.streamEventBuffer.push(Q),!this.streamEventTimer)this.streamEventTimer=setTimeout(()=>void this.flushStreamEventBuffer(),VQ);return}if(await this.flushStreamEventBuffer(),Q.type==="assistant")wQ(this.streamTextAccumulator,Q);await this.eventUploader.enqueue(this.toClientEvent(Q))}toClientEvent(Q){let W=Q;return{payload:{...W,uuid:typeof W.uuid==="string"?W.uuid:g()}}}async flushStreamEventBuffer(){if(this.streamEventTimer)clearTimeout(this.streamEventTimer),this.streamEventTimer=null;if(this.streamEventBuffer.length===0)return;let Q=this.streamEventBuffer;this.streamEventBuffer=[];let W=qQ(Q,this.streamTextAccumulator);await this.eventUploader.enqueue(W.map((Z)=>({payload:Z,ephemeral:!0})))}async writeInternalEvent(Q,W,{isCompaction:Z=!1,agentId:z}={}){let $={payload:{type:Q,...W,uuid:typeof W.uuid==="string"?W.uuid:g()},...Z&&{is_compaction:!0},...z&&{agent_id:z}};await this.internalEventUploader.enqueue($)}flushInternalEvents(){return this.internalEventUploader.flush()}async flush(){return await this.flushStreamEventBuffer(),this.eventUploader.flush()}async readInternalEvents(){return this.paginatedGet("/worker/internal-events",{},"internal_events")}async readSubagentInternalEvents(){return this.paginatedGet("/worker/internal-events",{subagents:"true"},"subagent_events")}async paginatedGet(Q,W,Z){let z=this.getAuthHeaders();if(Object.keys(z).length===0)return null;let $=[],J;do{let G=new URL(`${this.sessionBaseUrl}${Q}`);for(let[q,L]of Object.entries(W))G.searchParams.set(q,L);if(J)G.searchParams.set("cursor",J);let X=await this.getWithRetry(G.toString(),z,Z);if(!X)return null;$.push(...X.data??[]),J=X.next_cursor}while(J);return K(`CCRClient: Read ${$.length} internal events from ${Q}${W.subagents?" (subagents)":""}`),$}async getWithRetry(Q,W,Z){for(let z=1;z<=10;z++){let $;try{$=await this.http.get(Q,{headers:{...W,"anthropic-version":"2023-06-01","User-Agent":N()},validateStatus:l,timeout:30000})}catch(J){if(K(`CCRClient: GET ${Q} failed (attempt ${z}/10): ${H(J)}`,{level:"warn"}),z<10){let G=Math.min(500*2**(z-1),30000)+Math.random()*500;await U(G)}continue}if($.status>=200&&$.status<300)return $.data;if($.status===409)this.handleEpochMismatch();if(K(`CCRClient: GET ${Q} returned ${$.status} (attempt ${z}/10)`,{level:"warn"}),z<10){let J=Math.min(500*2**(z-1),30000)+Math.random()*500;await U(J)}}return K("CCRClient: GET retries exhausted",{level:"error"}),Y("error","cli_worker_get_retries_exhausted",{context:Z}),null}reportDelivery(Q,W){this.deliveryUploader.enqueue({eventId:Q,status:W})}getWorkerEpoch(){return this.workerEpoch}get internalEventsPending(){return this.internalEventUploader.pendingCount}close(){if(this.closed=!0,this.stopHeartbeat(),s(),this.streamEventTimer)clearTimeout(this.streamEventTimer),this.streamEventTimer=null;this.streamEventBuffer=[],this.streamTextAccumulator.byMessage.clear(),this.streamTextAccumulator.scopeToMessage.clear(),this.workerState.close(),this.eventUploader.close(),this.internalEventUploader.close(),this.deliveryUploader.close()}}b();h();F();r();I();y();t();import OQ from"axios";var jQ=1000,BQ=30000,HQ=600000,UQ=45000,CQ=new Set([401,403,404]),A=10,PQ=500,TQ=8000,NQ={stream:!0};function kQ(){return!0}function xQ(Q){let W=[],Z=0,z;while((z=Q.indexOf(`
2
+ import{MK as a,NK as E,PK as r,QK as o,RK as s,WK as KQ}from"./cli-7jw2qe69.js";import{G1 as N,H1 as t}from"./cli-192xnkcx.js";import{s5 as n,z5 as JQ}from"./cli-2428yw99.js";import{D5 as U,E5 as I}from"./cli-hpxspent.js";import{Q6 as Y,S6 as h}from"./cli-yb5m6jwq.js";import{$8 as WQ,_8 as u}from"./cli-e5yek4vx.js";import{A_ as b,Z9 as H,_9 as i,d_ as F,f_ as k,g_ as R,j_ as y,x_ as K}from"./cli-awb77t95.js";WQ();b();h();F();y();function D(Q){if(Q<60000)return`${Math.round(Q/1000)}s`;let W=Math.floor(Q/60000),Z=Math.round(Q%60000/1000);return Z>0?`${W}m ${Z}s`:`${W}m`}function ZQ(Q){let Z=(Q.startsWith("sk-ant-si-")?Q.slice(10):Q).split(".");if(Z.length!==3||!Z[1])return null;try{return R(Buffer.from(Z[1],"base64url").toString("utf8"))}catch{return null}}function f(Q){let W=ZQ(Q);if(W!==null&&typeof W==="object"&&"exp"in W&&typeof W.exp==="number")return W.exp;return null}var $Q=300000,p=1800000,m=3,zQ=60000;function DQ({getAccessToken:Q,onRefresh:W,label:Z,refreshBufferMs:z=$Q}){let $=new Map,J=new Map,G=new Map;function X(V){let w=(G.get(V)??0)+1;return G.set(V,w),w}function q(V,w){let j=f(w);if(!j){K(`[${Z}:token] Could not decode JWT expiry for sessionId=${V}, token prefix=${w.slice(0,15)}\u2026, keeping existing timer`);return}let C=$.get(V);if(C)clearTimeout(C);let B=X(V),P=new Date(j*1000).toISOString(),v=j*1000-Date.now()-z;if(v<=0){K(`[${Z}:token] Token for sessionId=${V} expires=${P} (past or within buffer), refreshing immediately`),O(V,B);return}K(`[${Z}:token] Scheduled token refresh for sessionId=${V} in ${D(v)} (expires=${P}, buffer=${z/1000}s)`);let QQ=setTimeout(O,v,V,B);$.set(V,QQ)}function L(V,w){let j=$.get(V);if(j)clearTimeout(j);let C=X(V),B=Math.max(w*1000-z,30000);K(`[${Z}:token] Scheduled token refresh for sessionId=${V} in ${D(B)} (expires_in=${w}s, buffer=${z/1000}s)`);let P=setTimeout(O,B,V,C);$.set(V,P)}async function O(V,w){let j;try{j=await Q()}catch(B){K(`[${Z}:token] getAccessToken threw for sessionId=${V}: ${H(B)}`,{level:"error"})}if(G.get(V)!==w){K(`[${Z}:token] doRefresh for sessionId=${V} stale (gen ${w} vs ${G.get(V)}), skipping`);return}if(!j){let B=(J.get(V)??0)+1;if(J.set(V,B),K(`[${Z}:token] No OAuth token available for refresh, sessionId=${V} (failure ${B}/${m})`,{level:"error"}),Y("error","bridge_token_refresh_no_oauth"),B<m){let P=setTimeout(O,zQ,V,w);$.set(V,P)}return}J.delete(V),K(`[${Z}:token] Refreshing token for sessionId=${V}: new token prefix=${j.slice(0,15)}\u2026`),u("tengu_bridge_token_refreshed",{}),W(V,j);let C=setTimeout(O,p,V,w);$.set(V,C),K(`[${Z}:token] Scheduled follow-up refresh for sessionId=${V} in ${D(p)}`)}function _(V){X(V);let w=$.get(V);if(w)clearTimeout(w),$.delete(V);J.delete(V)}function e(){for(let V of G.keys())X(V);for(let V of $.values())clearTimeout(V);$.clear(),J.clear()}return{schedule:q,scheduleFromExpiresIn:L,cancel:_,cancelAll:e}}import{randomUUID as g}from"crypto";b();h();F();JQ();KQ();r();I();t();y();class T extends Error{retryAfterMs;constructor(Q,W){super(Q);this.retryAfterMs=W}}class x{pending=[];pendingAtClose=0;draining=!1;closed=!1;backpressureResolvers=[];sleepResolve=null;flushResolvers=[];droppedBatches=0;config;constructor(Q){this.config=Q}get droppedBatchCount(){return this.droppedBatches}get pendingCount(){return this.closed?this.pendingAtClose:this.pending.length}async enqueue(Q){if(this.closed)return;let W=Array.isArray(Q)?Q:[Q];if(W.length===0)return;while(this.pending.length+W.length>this.config.maxQueueSize&&!this.closed)await new Promise((Z)=>{this.backpressureResolvers.push(Z)});if(this.closed)return;this.pending.push(...W),this.drain()}flush(){if(this.pending.length===0&&!this.draining)return Promise.resolve();return this.drain(),new Promise((Q)=>{this.flushResolvers.push(Q)})}close(){if(this.closed)return;this.closed=!0,this.pendingAtClose=this.pending.length,this.pending=[],this.sleepResolve?.(),this.sleepResolve=null;for(let Q of this.backpressureResolvers)Q();this.backpressureResolvers=[];for(let Q of this.flushResolvers)Q();this.flushResolvers=[]}async drain(){if(this.draining||this.closed)return;this.draining=!0;let Q=0;try{while(this.pending.length>0&&!this.closed){let W=this.takeBatch();if(W.length===0)continue;try{await this.config.send(W),Q=0}catch(Z){if(Q++,this.config.maxConsecutiveFailures!==void 0&&Q>=this.config.maxConsecutiveFailures){this.droppedBatches++,this.config.onBatchDropped?.(W.length,Q),Q=0,this.releaseBackpressure();continue}this.pending=W.concat(this.pending);let z=Z instanceof T?Z.retryAfterMs:void 0;await this.sleep(this.retryDelay(Q,z));continue}this.releaseBackpressure()}}finally{if(this.draining=!1,this.pending.length===0){for(let W of this.flushResolvers)W();this.flushResolvers=[]}}}takeBatch(){let{maxBatchSize:Q,maxBatchBytes:W}=this.config;if(W===void 0)return this.pending.splice(0,Q);let Z=0,z=0;while(z<this.pending.length&&z<Q){let $;try{$=Buffer.byteLength(k(this.pending[z]))}catch{this.pending.splice(z,1);continue}if(z>0&&Z+$>W)break;Z+=$,z++}return this.pending.splice(0,z)}retryDelay(Q,W){let Z=Math.random()*this.config.jitterMs;if(W!==void 0)return Math.max(this.config.baseDelayMs,Math.min(W,this.config.maxDelayMs))+Z;return Math.min(this.config.baseDelayMs*2**(Q-1),this.config.maxDelayMs)+Z}releaseBackpressure(){let Q=this.backpressureResolvers;this.backpressureResolvers=[];for(let W of Q)W()}sleep(Q){return new Promise((W)=>{this.sleepResolve=W,setTimeout((Z,z)=>{Z.sleepResolve=null,z()},Q,this,W)})}}I();class c{inflight=null;pending=null;closed=!1;config;constructor(Q){this.config=Q}enqueue(Q){if(this.closed)return;this.pending=this.pending?d(this.pending,Q):Q,this.drain()}close(){this.closed=!0,this.pending=null}async drain(){if(this.inflight||this.closed)return;if(!this.pending)return;let Q=this.pending;this.pending=null,this.inflight=this.sendWithRetry(Q).then(()=>{if(this.inflight=null,this.pending&&!this.closed)this.drain()})}async sendWithRetry(Q){let W=Q,Z=0;while(!this.closed){if(await this.config.send(W))return;if(Z++,await U(this.retryDelay(Z)),this.pending&&!this.closed)W=d(W,this.pending),this.pending=null}}retryDelay(Q){let W=Math.min(this.config.baseDelayMs*2**(Q-1),this.config.maxDelayMs),Z=Math.random()*this.config.jitterMs;return W+Z}}function d(Q,W){let Z={...Q};for(let[z,$]of Object.entries(W))if((z==="external_metadata"||z==="internal_metadata")&&Z[z]&&typeof Z[z]==="object"&&typeof $==="object"&&$!==null)Z[z]={...Z[z],...$};else Z[z]=$;return Z}var GQ=20000,VQ=100;function l(){return!0}class M extends Error{reason;constructor(Q){super(`CCRClient init failed: ${Q}`);this.reason=Q}}var YQ=10;function XQ(){return{byMessage:new Map,scopeToMessage:new Map}}function S(Q){return`${Q.session_id}:${Q.parent_tool_use_id??""}`}function qQ(Q,W){let Z=[],z=new Map;for(let $ of Q)switch($.event.type){case"message_start":{let J=$.event.message.id,G=W.scopeToMessage.get(S($));if(G)W.byMessage.delete(G);W.scopeToMessage.set(S($),J),W.byMessage.set(J,[]),Z.push($);break}case"content_block_delta":{if($.event.delta.type!=="text_delta"){Z.push($);break}let J=W.scopeToMessage.get(S($)),G=J?W.byMessage.get(J):void 0;if(!G){Z.push($);break}let X=G[$.event.index]??=[];X.push($.event.delta.text);let q=z.get(X);if(q){q.event.delta.text=X.join("");break}let L={type:"stream_event",uuid:$.uuid,session_id:$.session_id,parent_tool_use_id:$.parent_tool_use_id,event:{type:"content_block_delta",index:$.event.index,delta:{type:"text_delta",text:X.join("")}}};z.set(X,L),Z.push(L);break}default:Z.push($)}return Z}function wQ(Q,W){Q.byMessage.delete(W.message.id);let Z=S(W);if(Q.scopeToMessage.get(Z)===W.message.id)Q.scopeToMessage.delete(Z)}class LQ{workerEpoch=0;heartbeatIntervalMs;heartbeatJitterFraction;heartbeatTimer=null;heartbeatInFlight=!1;closed=!1;consecutiveAuthFailures=0;currentState=null;sessionBaseUrl;sessionId;http=n({keepAlive:!0});streamEventBuffer=[];streamEventTimer=null;streamTextAccumulator=XQ();workerState;eventUploader;internalEventUploader;deliveryUploader;onEpochMismatch;getAuthHeaders;constructor(Q,W,Z){if(this.onEpochMismatch=Z?.onEpochMismatch??(()=>{process.exit(1)}),this.heartbeatIntervalMs=Z?.heartbeatIntervalMs??GQ,this.heartbeatJitterFraction=Z?.heartbeatJitterFraction??0,this.getAuthHeaders=Z?.getAuthHeaders??E,W.protocol!=="http:"&&W.protocol!=="https:")throw Error(`CCRClient: Expected http(s) URL, got ${W.protocol}`);let z=W.pathname.replace(/\/$/,"");this.sessionBaseUrl=`${W.protocol}//${W.host}${z}`,this.sessionId=z.split("/").pop()||"",this.workerState=new c({send:($)=>this.request("put","/worker",{worker_epoch:this.workerEpoch,...$},"PUT worker").then((J)=>J.ok),baseDelayMs:500,maxDelayMs:30000,jitterMs:500}),this.eventUploader=new x({maxBatchSize:100,maxBatchBytes:10485760,maxQueueSize:1e5,send:async($)=>{let J=await this.request("post","/worker/events",{worker_epoch:this.workerEpoch,events:$},"client events");if(!J.ok)throw new T("client event POST failed",J.retryAfterMs)},baseDelayMs:500,maxDelayMs:30000,jitterMs:500}),this.internalEventUploader=new x({maxBatchSize:100,maxBatchBytes:10485760,maxQueueSize:200,send:async($)=>{let J=await this.request("post","/worker/internal-events",{worker_epoch:this.workerEpoch,events:$},"internal events");if(!J.ok)throw new T("internal event POST failed",J.retryAfterMs)},baseDelayMs:500,maxDelayMs:30000,jitterMs:500}),this.deliveryUploader=new x({maxBatchSize:64,maxQueueSize:64,send:async($)=>{let J=await this.request("post","/worker/events/delivery",{worker_epoch:this.workerEpoch,updates:$.map((G)=>({event_id:G.eventId,status:G.status}))},"delivery batch");if(!J.ok)throw new T("delivery POST failed",J.retryAfterMs)},baseDelayMs:500,maxDelayMs:30000,jitterMs:500}),Q.setOnEvent(($)=>{this.reportDelivery($.event_id,"received")})}async initialize(Q){let W=Date.now();if(Object.keys(this.getAuthHeaders()).length===0)throw new M("no_auth_headers");if(Q===void 0){let G=process.env.CLAUDE_CODE_WORKER_EPOCH;Q=G?parseInt(G,10):NaN}if(isNaN(Q))throw new M("missing_epoch");this.workerEpoch=Q;let Z=this.getWorkerState();if(!(await this.request("put","/worker",{worker_status:"idle",worker_epoch:this.workerEpoch,external_metadata:{pending_action:null,task_summary:null}},"PUT worker (init)")).ok)throw new M("worker_register_failed");this.currentState="idle",this.startHeartbeat(),o(()=>{this.writeEvent({type:"keep_alive"})}),K(`CCRClient: initialized, epoch=${this.workerEpoch}`),Y("info","cli_worker_lifecycle_initialized",{epoch:this.workerEpoch,duration_ms:Date.now()-W});let{metadata:$,durationMs:J}=await Z;if(!this.closed)Y("info","cli_worker_state_restored",{duration_ms:J,had_state:$!==null});return $}async getWorkerState(){let Q=Date.now(),W=this.getAuthHeaders();if(Object.keys(W).length===0)return{metadata:null,durationMs:0};return{metadata:(await this.getWithRetry(`${this.sessionBaseUrl}/worker`,W,"worker_state"))?.worker?.external_metadata??null,durationMs:Date.now()-Q}}async request(Q,W,Z,z,{timeout:$=1e4}={}){let J=this.getAuthHeaders();if(Object.keys(J).length===0)return{ok:!1};try{let G=await this.http[Q](`${this.sessionBaseUrl}${W}`,Z,{headers:{...J,"Content-Type":"application/json","anthropic-version":"2023-06-01","User-Agent":N()},validateStatus:l,timeout:$});if(G.status>=200&&G.status<300)return this.consecutiveAuthFailures=0,{ok:!0};if(G.status===409)this.handleEpochMismatch();if(G.status===401||G.status===403){let X=a(),q=X?f(X):null;if(q!==null&&q*1000<Date.now())K(`CCRClient: session_token expired (exp=${new Date(q*1000).toISOString()}) \u2014 no refresh was delivered, exiting`,{level:"error"}),Y("error","cli_worker_token_expired_no_refresh"),this.onEpochMismatch();if(this.consecutiveAuthFailures++,this.consecutiveAuthFailures>=YQ)K(`CCRClient: ${this.consecutiveAuthFailures} consecutive auth failures with a valid-looking token \u2014 server-side auth unrecoverable, exiting`,{level:"error"}),Y("error","cli_worker_auth_failures_exhausted"),this.onEpochMismatch()}if(K(`CCRClient: ${z} returned ${G.status}`,{level:"warn"}),Y("warn","cli_worker_request_failed",{method:Q,path:W,status:G.status}),G.status===429){let X=G.headers?.["retry-after"],q=typeof X==="string"?parseInt(X,10):NaN;if(!isNaN(q)&&q>=0)return{ok:!1,retryAfterMs:q*1000}}return{ok:!1}}catch(G){return K(`CCRClient: ${z} failed: ${H(G)}`,{level:"warn"}),Y("warn","cli_worker_request_error",{method:Q,path:W,error_code:i(G)}),{ok:!1}}}reportState(Q,W){if(Q===this.currentState&&!W)return;this.currentState=Q,this.workerState.enqueue({worker_status:Q,requires_action_details:W?{tool_name:W.tool_name,action_description:W.action_description,request_id:W.request_id}:null})}reportMetadata(Q){this.workerState.enqueue({external_metadata:Q})}handleEpochMismatch(){K("CCRClient: Epoch mismatch (409), shutting down",{level:"error"}),Y("error","cli_worker_epoch_mismatch"),this.onEpochMismatch()}startHeartbeat(){this.stopHeartbeat();let Q=()=>{let Z=this.heartbeatIntervalMs*this.heartbeatJitterFraction*(2*Math.random()-1);this.heartbeatTimer=setTimeout(W,this.heartbeatIntervalMs+Z)},W=()=>{if(this.sendHeartbeat(),this.heartbeatTimer===null)return;Q()};Q()}stopHeartbeat(){if(this.heartbeatTimer)clearTimeout(this.heartbeatTimer),this.heartbeatTimer=null}async sendHeartbeat(){if(this.heartbeatInFlight)return;this.heartbeatInFlight=!0;try{if((await this.request("post","/worker/heartbeat",{session_id:this.sessionId,worker_epoch:this.workerEpoch},"Heartbeat",{timeout:5000})).ok)K("CCRClient: Heartbeat sent")}finally{this.heartbeatInFlight=!1}}async writeEvent(Q){if(Q.type==="stream_event"){if(this.streamEventBuffer.push(Q),!this.streamEventTimer)this.streamEventTimer=setTimeout(()=>void this.flushStreamEventBuffer(),VQ);return}if(await this.flushStreamEventBuffer(),Q.type==="assistant")wQ(this.streamTextAccumulator,Q);await this.eventUploader.enqueue(this.toClientEvent(Q))}toClientEvent(Q){let W=Q;return{payload:{...W,uuid:typeof W.uuid==="string"?W.uuid:g()}}}async flushStreamEventBuffer(){if(this.streamEventTimer)clearTimeout(this.streamEventTimer),this.streamEventTimer=null;if(this.streamEventBuffer.length===0)return;let Q=this.streamEventBuffer;this.streamEventBuffer=[];let W=qQ(Q,this.streamTextAccumulator);await this.eventUploader.enqueue(W.map((Z)=>({payload:Z,ephemeral:!0})))}async writeInternalEvent(Q,W,{isCompaction:Z=!1,agentId:z}={}){let $={payload:{type:Q,...W,uuid:typeof W.uuid==="string"?W.uuid:g()},...Z&&{is_compaction:!0},...z&&{agent_id:z}};await this.internalEventUploader.enqueue($)}flushInternalEvents(){return this.internalEventUploader.flush()}async flush(){return await this.flushStreamEventBuffer(),this.eventUploader.flush()}async readInternalEvents(){return this.paginatedGet("/worker/internal-events",{},"internal_events")}async readSubagentInternalEvents(){return this.paginatedGet("/worker/internal-events",{subagents:"true"},"subagent_events")}async paginatedGet(Q,W,Z){let z=this.getAuthHeaders();if(Object.keys(z).length===0)return null;let $=[],J;do{let G=new URL(`${this.sessionBaseUrl}${Q}`);for(let[q,L]of Object.entries(W))G.searchParams.set(q,L);if(J)G.searchParams.set("cursor",J);let X=await this.getWithRetry(G.toString(),z,Z);if(!X)return null;$.push(...X.data??[]),J=X.next_cursor}while(J);return K(`CCRClient: Read ${$.length} internal events from ${Q}${W.subagents?" (subagents)":""}`),$}async getWithRetry(Q,W,Z){for(let z=1;z<=10;z++){let $;try{$=await this.http.get(Q,{headers:{...W,"anthropic-version":"2023-06-01","User-Agent":N()},validateStatus:l,timeout:30000})}catch(J){if(K(`CCRClient: GET ${Q} failed (attempt ${z}/10): ${H(J)}`,{level:"warn"}),z<10){let G=Math.min(500*2**(z-1),30000)+Math.random()*500;await U(G)}continue}if($.status>=200&&$.status<300)return $.data;if($.status===409)this.handleEpochMismatch();if(K(`CCRClient: GET ${Q} returned ${$.status} (attempt ${z}/10)`,{level:"warn"}),z<10){let J=Math.min(500*2**(z-1),30000)+Math.random()*500;await U(J)}}return K("CCRClient: GET retries exhausted",{level:"error"}),Y("error","cli_worker_get_retries_exhausted",{context:Z}),null}reportDelivery(Q,W){this.deliveryUploader.enqueue({eventId:Q,status:W})}getWorkerEpoch(){return this.workerEpoch}get internalEventsPending(){return this.internalEventUploader.pendingCount}close(){if(this.closed=!0,this.stopHeartbeat(),s(),this.streamEventTimer)clearTimeout(this.streamEventTimer),this.streamEventTimer=null;this.streamEventBuffer=[],this.streamTextAccumulator.byMessage.clear(),this.streamTextAccumulator.scopeToMessage.clear(),this.workerState.close(),this.eventUploader.close(),this.internalEventUploader.close(),this.deliveryUploader.close()}}b();h();F();r();I();y();t();import OQ from"axios";var jQ=1000,BQ=30000,HQ=600000,UQ=45000,CQ=new Set([401,403,404]),A=10,PQ=500,TQ=8000,NQ={stream:!0};function kQ(){return!0}function xQ(Q){let W=[],Z=0,z;while((z=Q.indexOf(`
3
3
 
4
4
  `,Z))!==-1){let $=Q.slice(Z,z);if(Z=z+2,!$.trim())continue;let J={},G=!1;for(let X of $.split(`
5
5
  `)){if(X.startsWith(":")){G=!0;continue}let q=X.indexOf(":");if(q===-1)continue;let L=X.slice(0,q),O=X[q+1]===" "?X.slice(q+2):X.slice(q+1);switch(L){case"event":J.event=O;break;case"id":J.id=O;break;case"data":J.data=J.data?J.data+`
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{$2 as p,a3 as J}from"./cli-msmzt4c3.js";import{J_ as k,S_ as I}from"./cli-tq5z9qv3.js";import{fda as x}from"./cli-w1d8n9g3.js";function q(){return{...h,...p("tengu_malort_pedway",h)}}function R(){if(k(process.env.CLAUDE_COMPUTER_USE_ENABLED))return!1;return!0}function V(){let{enabled:N,coordinateMode:O,...w}=q();return w}function W(){return j??=q().coordinateMode,j}var h,j;var K=x(()=>{J();I();h={enabled:!0,pixelValidation:!1,clipboardPasteMultiline:!0,mouseAnimation:!0,hideBeforeAction:!0,autoTargetDisplay:!0,clipboardGuard:!0,coordinateMode:"pixels"}});
2
+ import{$2 as p,a3 as J}from"./cli-192xnkcx.js";import{L_ as k,U_ as I}from"./cli-q8zmmp6z.js";import{hda as x}from"./cli-qwx84m9c.js";function q(){return{...h,...p("tengu_malort_pedway",h)}}function R(){if(k(process.env.CLAUDE_COMPUTER_USE_ENABLED))return!1;return!0}function V(){let{enabled:N,coordinateMode:O,...w}=q();return w}function W(){return j??=q().coordinateMode,j}var h,j;var K=x(()=>{J();I();h={enabled:!0,pixelValidation:!1,clipboardPasteMultiline:!0,mouseAnimation:!0,hideBeforeAction:!0,autoTargetDisplay:!0,clipboardGuard:!0,coordinateMode:"pixels"}});
3
3
  export{R as sS,V as tS,W as uS,K as vS};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{Mf as i,Pf as Xq}from"./cli-mj03488e.js";import{Qf as r,Sf as Zq}from"./cli-k2nh5cby.js";import{Ep as g,Fp as Qq,Ug as S,Vg as l,Wg as t,mG as $,nG as Uq}from"./cli-me4e2p3e.js";import{SL as D,TL as qq,UL as d,VL as Gq,WL as c,XL as Jq,YL as u,ZL as Lq}from"./cli-xfsqvp8r.js";import{SO as a,UO as zq}from"./cli-akcxtvv9.js";import{DQ as O,FQ as F,fR as e}from"./cli-x8xgga1a.js";import{fda as s}from"./cli-w1d8n9g3.js";import{c as h}from"react/compiler-runtime";import Nq from"figures";import{useEffect as Wq,useState as y}from"react";import{useDebounceCallback as Yq}from"usehooks-ts";import{jsxDEV as z}from"react/jsx-dev-runtime";function n(){let Z=h(1),q;if(Z[0]===Symbol.for("react.memo_cache_sentinel"))q=z(F,{dimColor:!0,children:"UnieAI Code will be able to read files in this directory and make edits when auto-accept edits is on."},void 0,!1,void 0,this),Z[0]=q;else q=Z[0];return q}function Mq(Z){let q=h(5),{path:X}=Z,Q;if(q[0]!==X)Q=z(F,{color:"permission",children:X},void 0,!1,void 0,this),q[0]=X,q[1]=Q;else Q=q[1];let N;if(q[2]===Symbol.for("react.memo_cache_sentinel"))N=z(n,{},void 0,!1,void 0,this),q[2]=N;else N=q[2];let L;if(q[3]!==Q)L=z(O,{flexDirection:"column",paddingX:2,gap:1,children:[Q,N]},void 0,!0,void 0,this),q[3]=Q,q[4]=L;else L=q[4];return L}function Oq(Z){let q=h(14),{value:X,onChange:Q,onSubmit:N,error:L,suggestions:W,selectedSuggestion:R}=Z,M;if(q[0]===Symbol.for("react.memo_cache_sentinel"))M=z(F,{children:"Enter the path to the directory:"},void 0,!1,void 0,this),q[0]=M;else M=q[0];let k;if(q[1]!==Q||q[2]!==N||q[3]!==X)k=z(O,{borderDimColor:!0,borderStyle:"round",marginY:1,paddingLeft:1,children:z($,{showCursor:!0,placeholder:`Directory path${Nq.ellipsis}`,value:X,onChange:Q,onSubmit:N,columns:80,cursorOffset:X.length,onChangeCursorOffset:fq},void 0,!1,void 0,this)},void 0,!1,void 0,this),q[1]=Q,q[2]=N,q[3]=X,q[4]=k;else k=q[4];let Y;if(q[5]!==R||q[6]!==W)Y=W.length>0&&z(O,{marginBottom:1,children:z(r,{suggestions:W,selectedSuggestion:R},void 0,!1,void 0,this)},void 0,!1,void 0,this),q[5]=R,q[6]=W,q[7]=Y;else Y=q[7];let U;if(q[8]!==L)U=L&&z(F,{color:"error",children:L},void 0,!1,void 0,this),q[8]=L,q[9]=U;else U=q[9];let f;if(q[10]!==k||q[11]!==Y||q[12]!==U)f=z(O,{flexDirection:"column",children:[M,k,Y,U]},void 0,!0,void 0,this),q[10]=k,q[11]=Y,q[12]=U,q[13]=f;else f=q[13];return f}function fq(){}function xq(Z){let q=h(34),{onAddDirectory:X,onCancel:Q,permissionContext:N,directoryPath:L}=Z,[W,R]=y(""),[M,k]=y(null),Y;if(q[0]===Symbol.for("react.memo_cache_sentinel"))Y=[],q[0]=Y;else Y=q[0];let[U,f]=y(Y),[H,T]=y(0),B;if(q[1]===Symbol.for("react.memo_cache_sentinel"))B=async(G)=>{if(!G){f([]),T(0);return}let J=await i(G);f(J),T(0)},q[1]=B;else B=q[1];let v=Yq(B,100),I,C;if(q[2]!==v||q[3]!==W)I=()=>{v(W)},C=[W,v],q[2]=v,q[3]=W,q[4]=I,q[5]=C;else I=q[4],C=q[5];Wq(I,C);let P;if(q[6]===Symbol.for("react.memo_cache_sentinel"))P=(G)=>{let J=G.id+"/";R(J),k(null)},q[6]=P;else P=q[6];let o=P,m;if(q[7]!==X||q[8]!==N)m=async(G)=>{let J=await S(G,N);if(J.resultType==="success")X(J.absolutePath,!1);else k(l(J))},q[7]=X,q[8]=N,q[9]=m;else m=q[9];let w=m,_;if(q[10]===Symbol.for("react.memo_cache_sentinel"))_={context:"Settings"},q[10]=_;else _=q[10];a("confirm:no",Q,_);let b;if(q[11]!==w||q[12]!==H||q[13]!==U)b=(G)=>{if(U.length>0){if(G.key==="tab"){G.preventDefault();let J=U[H];if(J)o(J);return}if(G.key==="return"){G.preventDefault();let J=U[H];if(J)w(J.id+"/");return}if(G.key==="up"||G.ctrl&&G.key==="p"){G.preventDefault(),T((J)=>J<=0?U.length-1:J-1);return}if(G.key==="down"||G.ctrl&&G.key==="n"){G.preventDefault(),T((J)=>J>=U.length-1?0:J+1);return}}},q[11]=w,q[12]=H,q[13]=U,q[14]=b;else b=q[14];let x=b,V;if(q[15]!==L||q[16]!==X||q[17]!==Q)V=(G)=>{if(!L)return;let J=G;q:switch(J){case"yes-session":{X(L,!1);break q}case"yes-remember":{X(L,!0);break q}case"no":Q()}},q[15]=L,q[16]=X,q[17]=Q,q[18]=V;else V=q[18];let j=V,p=L?void 0:Hq,K;if(q[19]!==W||q[20]!==L||q[21]!==M||q[22]!==j||q[23]!==w||q[24]!==H||q[25]!==U)K=L?z(O,{flexDirection:"column",gap:1,children:[z(Mq,{path:L},void 0,!1,void 0,this),z(g,{options:kq,onChange:j,onCancel:()=>j("no")},void 0,!1,void 0,this)]},void 0,!0,void 0,this):z(O,{flexDirection:"column",gap:1,marginX:2,children:[z(n,{},void 0,!1,void 0,this),z(Oq,{value:W,onChange:R,onSubmit:w,error:M,suggestions:U,selectedSuggestion:H},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[19]=W,q[20]=L,q[21]=M,q[22]=j,q[23]=w,q[24]=H,q[25]=U,q[26]=K;else K=q[26];let A;if(q[27]!==Q||q[28]!==p||q[29]!==K)A=z(u,{title:"Add directory to workspace",onCancel:Q,color:"permission",isCancelActive:!1,inputGuide:p,children:K},void 0,!1,void 0,this),q[27]=Q,q[28]=p,q[29]=K,q[30]=A;else A=q[30];let E;if(q[31]!==x||q[32]!==A)E=z(O,{flexDirection:"column",tabIndex:0,autoFocus:!0,onKeyDown:x,children:A},void 0,!1,void 0,this),q[31]=x,q[32]=A,q[33]=E;else E=q[33];return E}function Hq(Z){return Z.pending?z(F,{children:["Press ",Z.keyName," again to exit"]},void 0,!0,void 0,this):z(c,{children:[z(D,{shortcut:"Tab",action:"complete"},void 0,!1,void 0,this),z(D,{shortcut:"Enter",action:"add"},void 0,!1,void 0,this),z(d,{action:"confirm:no",context:"Settings",fallback:"Esc",description:"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var kq;var Rq=s(()=>{t();Uq();e();zq();Xq();Gq();Qq();Jq();Lq();qq();Zq();kq=[{value:"yes-session",label:"Yes, for this session"},{value:"yes-remember",label:"Yes, and remember this directory"},{value:"no",label:"No"}]});
2
+ import{Mf as i,Pf as Xq}from"./cli-vy3e90k9.js";import{Qf as r,Sf as Zq}from"./cli-vqne1z50.js";import{Ep as g,Fp as Qq,Ug as S,Vg as l,Wg as t,mG as $,nG as Uq}from"./cli-b3k8arn1.js";import{SL as D,TL as qq,UL as d,VL as Gq,WL as c,XL as Jq,YL as u,ZL as Lq}from"./cli-4pwyex04.js";import{SO as a,UO as zq}from"./cli-8jym9hp6.js";import{DQ as O,FQ as F,fR as e}from"./cli-a2d962bq.js";import{hda as s}from"./cli-qwx84m9c.js";import{c as h}from"react/compiler-runtime";import Nq from"figures";import{useEffect as Wq,useState as y}from"react";import{useDebounceCallback as Yq}from"usehooks-ts";import{jsxDEV as z}from"react/jsx-dev-runtime";function n(){let Z=h(1),q;if(Z[0]===Symbol.for("react.memo_cache_sentinel"))q=z(F,{dimColor:!0,children:"UnieAI Code will be able to read files in this directory and make edits when auto-accept edits is on."},void 0,!1,void 0,this),Z[0]=q;else q=Z[0];return q}function Mq(Z){let q=h(5),{path:X}=Z,Q;if(q[0]!==X)Q=z(F,{color:"permission",children:X},void 0,!1,void 0,this),q[0]=X,q[1]=Q;else Q=q[1];let N;if(q[2]===Symbol.for("react.memo_cache_sentinel"))N=z(n,{},void 0,!1,void 0,this),q[2]=N;else N=q[2];let L;if(q[3]!==Q)L=z(O,{flexDirection:"column",paddingX:2,gap:1,children:[Q,N]},void 0,!0,void 0,this),q[3]=Q,q[4]=L;else L=q[4];return L}function Oq(Z){let q=h(14),{value:X,onChange:Q,onSubmit:N,error:L,suggestions:W,selectedSuggestion:R}=Z,M;if(q[0]===Symbol.for("react.memo_cache_sentinel"))M=z(F,{children:"Enter the path to the directory:"},void 0,!1,void 0,this),q[0]=M;else M=q[0];let k;if(q[1]!==Q||q[2]!==N||q[3]!==X)k=z(O,{borderDimColor:!0,borderStyle:"round",marginY:1,paddingLeft:1,children:z($,{showCursor:!0,placeholder:`Directory path${Nq.ellipsis}`,value:X,onChange:Q,onSubmit:N,columns:80,cursorOffset:X.length,onChangeCursorOffset:fq},void 0,!1,void 0,this)},void 0,!1,void 0,this),q[1]=Q,q[2]=N,q[3]=X,q[4]=k;else k=q[4];let Y;if(q[5]!==R||q[6]!==W)Y=W.length>0&&z(O,{marginBottom:1,children:z(r,{suggestions:W,selectedSuggestion:R},void 0,!1,void 0,this)},void 0,!1,void 0,this),q[5]=R,q[6]=W,q[7]=Y;else Y=q[7];let U;if(q[8]!==L)U=L&&z(F,{color:"error",children:L},void 0,!1,void 0,this),q[8]=L,q[9]=U;else U=q[9];let f;if(q[10]!==k||q[11]!==Y||q[12]!==U)f=z(O,{flexDirection:"column",children:[M,k,Y,U]},void 0,!0,void 0,this),q[10]=k,q[11]=Y,q[12]=U,q[13]=f;else f=q[13];return f}function fq(){}function xq(Z){let q=h(34),{onAddDirectory:X,onCancel:Q,permissionContext:N,directoryPath:L}=Z,[W,R]=y(""),[M,k]=y(null),Y;if(q[0]===Symbol.for("react.memo_cache_sentinel"))Y=[],q[0]=Y;else Y=q[0];let[U,f]=y(Y),[H,T]=y(0),B;if(q[1]===Symbol.for("react.memo_cache_sentinel"))B=async(G)=>{if(!G){f([]),T(0);return}let J=await i(G);f(J),T(0)},q[1]=B;else B=q[1];let v=Yq(B,100),I,C;if(q[2]!==v||q[3]!==W)I=()=>{v(W)},C=[W,v],q[2]=v,q[3]=W,q[4]=I,q[5]=C;else I=q[4],C=q[5];Wq(I,C);let P;if(q[6]===Symbol.for("react.memo_cache_sentinel"))P=(G)=>{let J=G.id+"/";R(J),k(null)},q[6]=P;else P=q[6];let o=P,m;if(q[7]!==X||q[8]!==N)m=async(G)=>{let J=await S(G,N);if(J.resultType==="success")X(J.absolutePath,!1);else k(l(J))},q[7]=X,q[8]=N,q[9]=m;else m=q[9];let w=m,_;if(q[10]===Symbol.for("react.memo_cache_sentinel"))_={context:"Settings"},q[10]=_;else _=q[10];a("confirm:no",Q,_);let b;if(q[11]!==w||q[12]!==H||q[13]!==U)b=(G)=>{if(U.length>0){if(G.key==="tab"){G.preventDefault();let J=U[H];if(J)o(J);return}if(G.key==="return"){G.preventDefault();let J=U[H];if(J)w(J.id+"/");return}if(G.key==="up"||G.ctrl&&G.key==="p"){G.preventDefault(),T((J)=>J<=0?U.length-1:J-1);return}if(G.key==="down"||G.ctrl&&G.key==="n"){G.preventDefault(),T((J)=>J>=U.length-1?0:J+1);return}}},q[11]=w,q[12]=H,q[13]=U,q[14]=b;else b=q[14];let x=b,V;if(q[15]!==L||q[16]!==X||q[17]!==Q)V=(G)=>{if(!L)return;let J=G;q:switch(J){case"yes-session":{X(L,!1);break q}case"yes-remember":{X(L,!0);break q}case"no":Q()}},q[15]=L,q[16]=X,q[17]=Q,q[18]=V;else V=q[18];let j=V,p=L?void 0:Hq,K;if(q[19]!==W||q[20]!==L||q[21]!==M||q[22]!==j||q[23]!==w||q[24]!==H||q[25]!==U)K=L?z(O,{flexDirection:"column",gap:1,children:[z(Mq,{path:L},void 0,!1,void 0,this),z(g,{options:kq,onChange:j,onCancel:()=>j("no")},void 0,!1,void 0,this)]},void 0,!0,void 0,this):z(O,{flexDirection:"column",gap:1,marginX:2,children:[z(n,{},void 0,!1,void 0,this),z(Oq,{value:W,onChange:R,onSubmit:w,error:M,suggestions:U,selectedSuggestion:H},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q[19]=W,q[20]=L,q[21]=M,q[22]=j,q[23]=w,q[24]=H,q[25]=U,q[26]=K;else K=q[26];let A;if(q[27]!==Q||q[28]!==p||q[29]!==K)A=z(u,{title:"Add directory to workspace",onCancel:Q,color:"permission",isCancelActive:!1,inputGuide:p,children:K},void 0,!1,void 0,this),q[27]=Q,q[28]=p,q[29]=K,q[30]=A;else A=q[30];let E;if(q[31]!==x||q[32]!==A)E=z(O,{flexDirection:"column",tabIndex:0,autoFocus:!0,onKeyDown:x,children:A},void 0,!1,void 0,this),q[31]=x,q[32]=A,q[33]=E;else E=q[33];return E}function Hq(Z){return Z.pending?z(F,{children:["Press ",Z.keyName," again to exit"]},void 0,!0,void 0,this):z(c,{children:[z(D,{shortcut:"Tab",action:"complete"},void 0,!1,void 0,this),z(D,{shortcut:"Enter",action:"add"},void 0,!1,void 0,this),z(d,{action:"confirm:no",context:"Settings",fallback:"Esc",description:"cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var kq;var Rq=s(()=>{t();Uq();e();zq();Xq();Gq();Qq();Jq();Lq();qq();Zq();kq=[{value:"yes-session",label:"Yes, for this session"},{value:"yes-remember",label:"Yes, and remember this directory"},{value:"no",label:"No"}]});
3
3
  export{xq as Kf,Rq as Lf};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Fv as A,Gv as d,Jg as G,Mg as p,VE as i,gE as C,hl as F,iC as k,iE as _,il as r,jC as L,kC as l}from"./cli-me4e2p3e.js";import{PN as U,RN as u}from"./cli-764c4bsm.js";import{wT as O,xT as h}from"./cli-msmzt4c3.js";import{$9 as b,b_ as I,l_ as y,p_ as D}from"./cli-hke6r0q8.js";import{F_ as j,S_ as T}from"./cli-tq5z9qv3.js";import{fda as N}from"./cli-w1d8n9g3.js";import{join as M}from"path";function f(){return`IMPORTANT: This message and these instructions are NOT part of the actual user conversation. Do NOT include any references to "documentation updates", "magic docs", or these update instructions in the document content.
2
+ import{Fv as A,Gv as d,Jg as G,Mg as p,VE as i,gE as C,hl as F,iC as k,iE as _,il as r,jC as L,kC as l}from"./cli-b3k8arn1.js";import{PN as U,RN as u}from"./cli-bj0csmzs.js";import{wT as O,xT as h}from"./cli-192xnkcx.js";import{b_ as b,d_ as I,n_ as y,r_ as D}from"./cli-awb77t95.js";import{H_ as j,U_ as T}from"./cli-q8zmmp6z.js";import{hda as N}from"./cli-qwx84m9c.js";import{join as M}from"path";function f(){return`IMPORTANT: This message and these instructions are NOT part of the actual user conversation. Do NOT include any references to "documentation updates", "magic docs", or these update instructions in the document content.
3
3
 
4
4
  Based on the user conversation above (EXCLUDING this documentation update instruction message), update the Magic Doc file to incorporate any NEW learnings, insights, or information that would be valuable to preserve.
5
5
 
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{Nh as E,Oh as p,Ph as e,ci as S,gh as h,hh as Oq,hi as qq,ih as n,kh as Uq}from"./cli-me4e2p3e.js";import{gV as c,iV as d,lV as u,mV as g,rV as Wq}from"./cli-msmzt4c3.js";import{E8 as D,J8 as r}from"./cli-4ewb3q42.js";import{X9 as W,Y9 as O,Z9 as C,b_ as _,d_ as P,e_ as v,h_ as f,l_ as M,p_ as y,v_ as V,y_ as t}from"./cli-hke6r0q8.js";import{fda as N}from"./cli-w1d8n9g3.js";import{homedir as o}from"os";import{resolve as s}from"path";async function kq(Z){let q=Z.trim(),$=M(),Q=q.match(/^([a-zA-Z0-9._-]+@[^:]+:.+?(?:\.git)?)(#(.+))?$/);if(Q?.[1]){let z=Q[1],G=Q[3];return G?{source:"git",url:z,ref:G}:{source:"git",url:z}}if(q.startsWith("http://")||q.startsWith("https://")){let z=q.match(/^([^#]+)(#(.+))?$/),G=z?.[1]||q,X=z?.[3];if(G.endsWith(".git")||G.includes("/_git/"))return X?{source:"git",url:G,ref:X}:{source:"git",url:G};let Y;try{Y=new URL(G)}catch(J){return{source:"url",url:G}}if(Y.hostname==="github.com"||Y.hostname==="www.github.com"){if(Y.pathname.match(/^\/([^/]+\/[^/]+?)(\/|\.git|$)/)?.[1]){let K=G.endsWith(".git")?G:`${G}.git`;return X?{source:"git",url:K,ref:X}:{source:"git",url:K}}}return{source:"url",url:G}}let x=process.platform==="win32"&&(q.startsWith(".\\")||q.startsWith("..\\")||/^[a-zA-Z]:[/\\]/.test(q));if(q.startsWith("./")||q.startsWith("../")||q.startsWith("/")||q.startsWith("~")||x){let z=s(q.startsWith("~")?q.replace(/^~/,o()):q),G;try{G=await $.stat(z)}catch(X){let Y=O(X);return{error:Y==="ENOENT"?`Path does not exist: ${z}`:`Cannot access path: ${z} (${Y??X})`}}if(G.isFile())if(z.endsWith(".json"))return{source:"file",path:z};else return{error:`File path must point to a .json file (marketplace.json), but got: ${z}`};else if(G.isDirectory())return{source:"directory",path:z};else return{error:`Path is neither a file nor a directory: ${z}`}}if(q.includes("/")&&!q.startsWith("@")){if(q.includes(":"))return null;let z=q.match(/^([^#@]+)(?:[#@](.+))?$/),G=z?.[1]||q,X=z?.[2];return X?{source:"github",repo:G,ref:X}:{source:"github",repo:G}}return null}var a=N(()=>{_();y()});import Qq from"axios";import{randomBytes as Xq}from"crypto";import{readFile as Zq,rename as $q,unlink as Bq,writeFile as Gq}from"fs/promises";import{join as Yq}from"path";function m(){return Yq(S(),Jq)}async function xq(){let Z=m();try{let q=await Zq(Z,{encoding:"utf-8"}),$=v(q);if(typeof $!=="object"||$===null||!("version"in $)||!("fetchedAt"in $)||!("counts"in $))return V("Install counts cache has invalid structure"),null;let Q=$;if(Q.version!==L)return V(`Install counts cache version mismatch (got ${Q.version}, expected ${L})`),null;if(typeof Q.fetchedAt!=="string"||!Array.isArray(Q.counts))return V("Install counts cache has invalid structure"),null;let B=new Date(Q.fetchedAt).getTime();if(Number.isNaN(B))return V("Install counts cache has invalid fetchedAt timestamp"),null;if(!Q.counts.every((G)=>typeof G==="object"&&G!==null&&typeof G.plugin==="string"&&typeof G.unique_installs==="number"))return V("Install counts cache has malformed entries"),null;if(Date.now()-B>Kq)return V("Install counts cache is stale (>24h old)"),null;return{version:Q.version,fetchedAt:Q.fetchedAt,counts:Q.counts}}catch(q){if(O(q)!=="ENOENT")V(`Failed to load install counts cache: ${W(q)}`);return null}}async function zq(Z){let q=m(),$=`${q}.${Xq(8).toString("hex")}.tmp`;try{let Q=S();await M().mkdir(Q);let B=P(Z,null,2);await Gq($,B,{encoding:"utf-8",mode:384}),await $q($,q),V("Install counts cache saved successfully")}catch(Q){D(Q);try{await Bq($)}catch{}}}async function Hq(){V(`Fetching install counts from ${I}`);let Z=performance.now();try{let q=await Qq.get(I,{timeout:1e4});if(!q.data?.plugins||!Array.isArray(q.data.plugins))throw Error("Invalid response format from install counts API");return E("install_counts",I,"success",performance.now()-Z),q.data.plugins}catch(q){throw E("install_counts",I,"failure",performance.now()-Z,p(q)),q}}async function gq(){let Z=await xq();if(Z){V("Using cached install counts"),E("install_counts",I,"cache_hit",0);let q=new Map;for(let $ of Z.counts)q.set($.plugin,$.unique_installs);return q}try{let q=await Hq(),$={version:L,fetchedAt:new Date().toISOString(),counts:q};await zq($);let Q=new Map;for(let B of q)Q.set(B.plugin,B.unique_installs);return Q}catch(q){return D(q),V(`Failed to fetch install counts: ${W(q)}`),null}}function hq(Z){if(Z<1000)return String(Z);if(Z<1e6){let B=(Z/1000).toFixed(1);return B.endsWith(".0")?`${B.slice(0,-2)}K`:`${B}K`}let $=(Z/1e6).toFixed(1);return $.endsWith(".0")?`${$.slice(0,-2)}M`:`${$}M`}var L=1,Jq="install-counts-cache.json",I="https://raw.githubusercontent.com/anthropics/claude-plugins-official/refs/heads/stats/stats/plugin-installs.json",Kq=86400000;var Vq=N(()=>{t();_();y();r();f();e();qq()});import{readdir as vq,readFile as A,stat as Rq}from"fs/promises";import*as H from"path";import{z as Aq}from"zod/v4";function wq(Z){let q=H.basename(Z),$=H.basename(H.dirname(Z));if(q==="plugin.json")return"plugin";if(q==="marketplace.json")return"marketplace";if($===".claude-plugin")return"plugin";return"unknown"}function F(Z){return Z.issues.map((q)=>({path:q.path.join(".")||"root",message:q.message,code:q.code}))}function w(Z,q,$,Q){if(Z.includes(".."))$.push({path:q,message:Q?`Path contains "..": ${Z}. ${Q}`:`Path contains ".." which could be a path traversal attempt: ${Z}`})}function Mq(Z){let q=Z.replace(/^(\.\.\/)+/,"");return`Plugin source paths are resolved relative to the marketplace root (the directory containing .claude-plugin/), not relative to marketplace.json. Use "${q!==Z?`./${q}`:"./plugins/my-plugin"}" instead of "${Z}".`}async function j(Z){let q=[],$=[],Q=H.resolve(Z),B;try{B=await A(Q,{encoding:"utf-8"})}catch(X){let Y=O(X),J;if(Y==="ENOENT")J=`File not found: ${Q}`;else if(Y==="EISDIR")J=`Path is not a file: ${Q}`;else J=`Failed to read file: ${W(X)}`;return{success:!1,errors:[{path:"file",message:J,code:Y}],warnings:[],filePath:Q,fileType:"plugin"}}let x;try{x=v(B)}catch(X){return{success:!1,errors:[{path:"json",message:`Invalid JSON syntax: ${W(X)}`}],warnings:[],filePath:Q,fileType:"plugin"}}if(x&&typeof x==="object"){let X=x;if(X.commands)(Array.isArray(X.commands)?X.commands:[X.commands]).forEach((J,K)=>{if(typeof J==="string")w(J,`commands[${K}]`,q)});if(X.agents)(Array.isArray(X.agents)?X.agents:[X.agents]).forEach((J,K)=>{if(typeof J==="string")w(J,`agents[${K}]`,q)});if(X.skills)(Array.isArray(X.skills)?X.skills:[X.skills]).forEach((J,K)=>{if(typeof J==="string")w(J,`skills[${K}]`,q)})}let z=x;if(typeof x==="object"&&x!==null){let X=x,Y=Object.keys(X).filter((J)=>Iq.has(J));if(Y.length>0){let J={...X};for(let K of Y)delete J[K],$.push({path:K,message:`Field '${K}' belongs in the marketplace entry (marketplace.json), `+"not plugin.json. It's harmless here but unused \u2014 Claude Code "+"ignores it at load time."});z=J}}let G=d().strict().safeParse(z);if(!G.success)q.push(...F(G.error));if(G.success){let X=G.data;if(!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(X.name))$.push({path:"name",message:`Plugin name "${X.name}" is not kebab-case. Claude Code accepts it, but the Claude.ai marketplace sync requires kebab-case (lowercase letters, digits, and hyphens only, e.g., "my-plugin").`});if(!X.version)$.push({path:"version",message:'No version specified. Consider adding a version following semver (e.g., "1.0.0")'});if(!X.description)$.push({path:"description",message:"No description provided. Adding a description helps users understand what your plugin does"});if(!X.author)$.push({path:"author",message:"No author information provided. Consider adding author details for plugin attribution"})}return{success:q.length===0,errors:q,warnings:$,filePath:Q,fileType:"plugin"}}async function k(Z){let q=[],$=[],Q=H.resolve(Z),B;try{B=await A(Q,{encoding:"utf-8"})}catch(X){let Y=O(X),J;if(Y==="ENOENT")J=`File not found: ${Q}`;else if(Y==="EISDIR")J=`Path is not a file: ${Q}`;else J=`Failed to read file: ${W(X)}`;return{success:!1,errors:[{path:"file",message:J,code:Y}],warnings:[],filePath:Q,fileType:"marketplace"}}let x;try{x=v(B)}catch(X){return{success:!1,errors:[{path:"json",message:`Invalid JSON syntax: ${W(X)}`}],warnings:[],filePath:Q,fileType:"marketplace"}}if(x&&typeof x==="object"){let X=x;if(Array.isArray(X.plugins))X.plugins.forEach((Y,J)=>{if(Y&&typeof Y==="object"&&"source"in Y){let K=Y.source;if(typeof K==="string")w(K,`plugins[${J}].source`,q,Mq(K));if(K&&typeof K==="object"&&"path"in K&&typeof K.path==="string")w(K.path,`plugins[${J}].source.path`,q)}})}let G=g().extend({plugins:Aq.array(u().strict())}).strict().safeParse(x);if(!G.success)q.push(...F(G.error));if(G.success){let X=G.data;if(!X.plugins||X.plugins.length===0)$.push({path:"plugins",message:"Marketplace has no plugins defined"});if(X.plugins){X.plugins.forEach((K,U)=>{if(X.plugins.filter((R)=>R.name===K.name).length>1)q.push({path:`plugins[${U}].name`,message:`Duplicate plugin name "${K.name}" found in marketplace`})});let Y=H.dirname(Q),J=H.basename(Y)===".claude-plugin"?H.dirname(Y):Y;for(let[K,U]of X.plugins.entries()){if(!U.version||typeof U.source!=="string"||!U.source.startsWith("./"))continue;let T=H.join(J,U.source,".claude-plugin","plugin.json"),R;try{let i=await A(T,{encoding:"utf-8"}),b=v(i);if(typeof b.version==="string")R=b.version}catch{continue}if(R&&R!==U.version)$.push({path:`plugins[${K}].version`,message:`Entry declares version "${U.version}" but ${U.source}/.claude-plugin/plugin.json says "${R}". `+"At install time, plugin.json wins (calculatePluginVersion precedence) \u2014 the entry version is silently ignored. "+`Update this entry to "${R}" to match.`})}}if(!X.metadata?.description)$.push({path:"metadata.description",message:"No marketplace description provided. Adding a description helps users understand what this marketplace offers"})}return{success:q.length===0,errors:q,warnings:$,filePath:Q,fileType:"marketplace"}}function Eq(Z,q,$){let Q=[],B=[],x=q.match(n);if(!x)return B.push({path:"frontmatter",message:"No frontmatter block found. Add YAML frontmatter between --- delimiters at the top of the file to set description and other metadata."}),{success:!0,errors:Q,warnings:B,filePath:Z,fileType:$};let z=x[1]||"",G;try{G=h(z)}catch(K){return Q.push({path:"frontmatter",message:`YAML frontmatter failed to parse: ${W(K)}. At runtime this ${$} loads with empty metadata (all frontmatter fields silently dropped).`}),{success:!1,errors:Q,warnings:B,filePath:Z,fileType:$}}if(G===null||typeof G!=="object"||Array.isArray(G))return Q.push({path:"frontmatter",message:`Frontmatter must be a YAML mapping (key: value pairs), got ${Array.isArray(G)?"an array":G===null?"null":typeof G}.`}),{success:!1,errors:Q,warnings:B,filePath:Z,fileType:$};let X=G;if(X.description!==void 0){let K=X.description;if(typeof K!=="string"&&typeof K!=="number"&&typeof K!=="boolean"&&K!==null)Q.push({path:"description",message:`description must be a string, got ${Array.isArray(K)?"array":typeof K}. At runtime this value is dropped.`})}else B.push({path:"description",message:`No description in frontmatter. A description helps users and Claude understand when to use this ${$}.`});if(X.name!==void 0&&X.name!==null&&typeof X.name!=="string")Q.push({path:"name",message:`name must be a string, got ${typeof X.name}.`});let Y=X["allowed-tools"];if(Y!==void 0&&Y!==null){if(typeof Y!=="string"&&!Array.isArray(Y))Q.push({path:"allowed-tools",message:`allowed-tools must be a string or array of strings, got ${typeof Y}.`});else if(Array.isArray(Y)&&Y.some((K)=>typeof K!=="string"))Q.push({path:"allowed-tools",message:"allowed-tools array must contain only strings."})}let J=X.shell;if(J!==void 0&&J!==null)if(typeof J!=="string")Q.push({path:"shell",message:`shell must be a string, got ${typeof J}.`});else{let K=J.trim().toLowerCase();if(K!=="bash"&&K!=="powershell")Q.push({path:"shell",message:`shell must be 'bash' or 'powershell', got '${J}'.`})}return{success:Q.length===0,errors:Q,warnings:B,filePath:Z,fileType:$}}async function Nq(Z){let q;try{q=await A(Z,{encoding:"utf-8"})}catch(B){if(O(B)==="ENOENT")return{success:!0,errors:[],warnings:[],filePath:Z,fileType:"hooks"};return{success:!1,errors:[{path:"file",message:`Failed to read file: ${W(B)}`}],warnings:[],filePath:Z,fileType:"hooks"}}let $;try{$=v(q)}catch(B){return{success:!1,errors:[{path:"json",message:`Invalid JSON syntax: ${W(B)}. At runtime this breaks the entire plugin load.`}],warnings:[],filePath:Z,fileType:"hooks"}}let Q=c().safeParse($);if(!Q.success)return{success:!1,errors:F(Q.error),warnings:[],filePath:Z,fileType:"hooks"};return{success:!0,errors:[],warnings:[],filePath:Z,fileType:"hooks"}}async function l(Z,q){let $;try{$=await vq(Z,{withFileTypes:!0})}catch(B){let x=O(B);if(x==="ENOENT"||x==="ENOTDIR")return[];throw B}if(q)return $.filter((B)=>B.isDirectory()).map((B)=>H.join(Z,B.name,"SKILL.md"));let Q=[];for(let B of $){let x=H.join(Z,B.name);if(B.isDirectory())Q.push(...await l(x,!1));else if(B.isFile()&&B.name.toLowerCase().endsWith(".md"))Q.push(x)}return Q}async function eq(Z){let q=[],$=[["skill",H.join(Z,"skills")],["agent",H.join(Z,"agents")],["command",H.join(Z,"commands")]];for(let[B,x]of $){let z=await l(x,B==="skill");for(let G of z){let X;try{X=await A(G,{encoding:"utf-8"})}catch(J){if(C(J))continue;q.push({success:!1,errors:[{path:"file",message:`Failed to read: ${W(J)}`}],warnings:[],filePath:G,fileType:B});continue}let Y=Eq(G,X,B);if(Y.errors.length>0||Y.warnings.length>0)q.push(Y)}}let Q=await Nq(H.join(Z,"hooks","hooks.json"));if(Q.errors.length>0||Q.warnings.length>0)q.push(Q);return q}async function qQ(Z){let q=H.resolve(Z),$=null;try{$=await Rq(q)}catch(B){if(!C(B))throw B}if($?.isDirectory()){let B=H.join(q,".claude-plugin","marketplace.json"),x=await k(B);if(x.errors[0]?.code!=="ENOENT")return x;let z=H.join(q,".claude-plugin","plugin.json"),G=await j(z);if(G.errors[0]?.code!=="ENOENT")return G;return{success:!1,errors:[{path:"directory",message:"No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json"}],warnings:[],filePath:q,fileType:"plugin"}}switch(wq(Z)){case"plugin":return j(Z);case"marketplace":return k(Z);case"unknown":{try{let B=await A(q,{encoding:"utf-8"}),x=v(B);if(Array.isArray(x.plugins))return k(Z)}catch(B){if(O(B)==="ENOENT")return{success:!1,errors:[{path:"file",message:`File not found: ${q}`}],warnings:[],filePath:q,fileType:"plugin"}}return j(Z)}}}var Iq;var _q=N(()=>{_();Uq();f();Oq();Wq();Iq=new Set(["category","source","tags","strict","id"])});
2
+ import{Nh as E,Oh as p,Ph as e,ci as S,gh as h,hh as Oq,hi as qq,ih as n,kh as Uq}from"./cli-b3k8arn1.js";import{gV as c,iV as d,lV as u,mV as g,rV as Wq}from"./cli-192xnkcx.js";import{G8 as D,L8 as r}from"./cli-8kpqq0ea.js";import{$9 as C,A_ as t,Z9 as W,_9 as O,d_ as _,f_ as P,g_ as v,j_ as f,n_ as M,r_ as y,x_ as V}from"./cli-awb77t95.js";import{hda as N}from"./cli-qwx84m9c.js";import{homedir as o}from"os";import{resolve as s}from"path";async function kq(Z){let q=Z.trim(),$=M(),Q=q.match(/^([a-zA-Z0-9._-]+@[^:]+:.+?(?:\.git)?)(#(.+))?$/);if(Q?.[1]){let z=Q[1],G=Q[3];return G?{source:"git",url:z,ref:G}:{source:"git",url:z}}if(q.startsWith("http://")||q.startsWith("https://")){let z=q.match(/^([^#]+)(#(.+))?$/),G=z?.[1]||q,X=z?.[3];if(G.endsWith(".git")||G.includes("/_git/"))return X?{source:"git",url:G,ref:X}:{source:"git",url:G};let Y;try{Y=new URL(G)}catch(J){return{source:"url",url:G}}if(Y.hostname==="github.com"||Y.hostname==="www.github.com"){if(Y.pathname.match(/^\/([^/]+\/[^/]+?)(\/|\.git|$)/)?.[1]){let K=G.endsWith(".git")?G:`${G}.git`;return X?{source:"git",url:K,ref:X}:{source:"git",url:K}}}return{source:"url",url:G}}let x=process.platform==="win32"&&(q.startsWith(".\\")||q.startsWith("..\\")||/^[a-zA-Z]:[/\\]/.test(q));if(q.startsWith("./")||q.startsWith("../")||q.startsWith("/")||q.startsWith("~")||x){let z=s(q.startsWith("~")?q.replace(/^~/,o()):q),G;try{G=await $.stat(z)}catch(X){let Y=O(X);return{error:Y==="ENOENT"?`Path does not exist: ${z}`:`Cannot access path: ${z} (${Y??X})`}}if(G.isFile())if(z.endsWith(".json"))return{source:"file",path:z};else return{error:`File path must point to a .json file (marketplace.json), but got: ${z}`};else if(G.isDirectory())return{source:"directory",path:z};else return{error:`Path is neither a file nor a directory: ${z}`}}if(q.includes("/")&&!q.startsWith("@")){if(q.includes(":"))return null;let z=q.match(/^([^#@]+)(?:[#@](.+))?$/),G=z?.[1]||q,X=z?.[2];return X?{source:"github",repo:G,ref:X}:{source:"github",repo:G}}return null}var a=N(()=>{_();y()});import Qq from"axios";import{randomBytes as Xq}from"crypto";import{readFile as Zq,rename as $q,unlink as Bq,writeFile as Gq}from"fs/promises";import{join as Yq}from"path";function m(){return Yq(S(),Jq)}async function xq(){let Z=m();try{let q=await Zq(Z,{encoding:"utf-8"}),$=v(q);if(typeof $!=="object"||$===null||!("version"in $)||!("fetchedAt"in $)||!("counts"in $))return V("Install counts cache has invalid structure"),null;let Q=$;if(Q.version!==L)return V(`Install counts cache version mismatch (got ${Q.version}, expected ${L})`),null;if(typeof Q.fetchedAt!=="string"||!Array.isArray(Q.counts))return V("Install counts cache has invalid structure"),null;let B=new Date(Q.fetchedAt).getTime();if(Number.isNaN(B))return V("Install counts cache has invalid fetchedAt timestamp"),null;if(!Q.counts.every((G)=>typeof G==="object"&&G!==null&&typeof G.plugin==="string"&&typeof G.unique_installs==="number"))return V("Install counts cache has malformed entries"),null;if(Date.now()-B>Kq)return V("Install counts cache is stale (>24h old)"),null;return{version:Q.version,fetchedAt:Q.fetchedAt,counts:Q.counts}}catch(q){if(O(q)!=="ENOENT")V(`Failed to load install counts cache: ${W(q)}`);return null}}async function zq(Z){let q=m(),$=`${q}.${Xq(8).toString("hex")}.tmp`;try{let Q=S();await M().mkdir(Q);let B=P(Z,null,2);await Gq($,B,{encoding:"utf-8",mode:384}),await $q($,q),V("Install counts cache saved successfully")}catch(Q){D(Q);try{await Bq($)}catch{}}}async function Hq(){V(`Fetching install counts from ${I}`);let Z=performance.now();try{let q=await Qq.get(I,{timeout:1e4});if(!q.data?.plugins||!Array.isArray(q.data.plugins))throw Error("Invalid response format from install counts API");return E("install_counts",I,"success",performance.now()-Z),q.data.plugins}catch(q){throw E("install_counts",I,"failure",performance.now()-Z,p(q)),q}}async function gq(){let Z=await xq();if(Z){V("Using cached install counts"),E("install_counts",I,"cache_hit",0);let q=new Map;for(let $ of Z.counts)q.set($.plugin,$.unique_installs);return q}try{let q=await Hq(),$={version:L,fetchedAt:new Date().toISOString(),counts:q};await zq($);let Q=new Map;for(let B of q)Q.set(B.plugin,B.unique_installs);return Q}catch(q){return D(q),V(`Failed to fetch install counts: ${W(q)}`),null}}function hq(Z){if(Z<1000)return String(Z);if(Z<1e6){let B=(Z/1000).toFixed(1);return B.endsWith(".0")?`${B.slice(0,-2)}K`:`${B}K`}let $=(Z/1e6).toFixed(1);return $.endsWith(".0")?`${$.slice(0,-2)}M`:`${$}M`}var L=1,Jq="install-counts-cache.json",I="https://raw.githubusercontent.com/anthropics/claude-plugins-official/refs/heads/stats/stats/plugin-installs.json",Kq=86400000;var Vq=N(()=>{t();_();y();r();f();e();qq()});import{readdir as vq,readFile as A,stat as Rq}from"fs/promises";import*as H from"path";import{z as Aq}from"zod/v4";function wq(Z){let q=H.basename(Z),$=H.basename(H.dirname(Z));if(q==="plugin.json")return"plugin";if(q==="marketplace.json")return"marketplace";if($===".claude-plugin")return"plugin";return"unknown"}function F(Z){return Z.issues.map((q)=>({path:q.path.join(".")||"root",message:q.message,code:q.code}))}function w(Z,q,$,Q){if(Z.includes(".."))$.push({path:q,message:Q?`Path contains "..": ${Z}. ${Q}`:`Path contains ".." which could be a path traversal attempt: ${Z}`})}function Mq(Z){let q=Z.replace(/^(\.\.\/)+/,"");return`Plugin source paths are resolved relative to the marketplace root (the directory containing .claude-plugin/), not relative to marketplace.json. Use "${q!==Z?`./${q}`:"./plugins/my-plugin"}" instead of "${Z}".`}async function j(Z){let q=[],$=[],Q=H.resolve(Z),B;try{B=await A(Q,{encoding:"utf-8"})}catch(X){let Y=O(X),J;if(Y==="ENOENT")J=`File not found: ${Q}`;else if(Y==="EISDIR")J=`Path is not a file: ${Q}`;else J=`Failed to read file: ${W(X)}`;return{success:!1,errors:[{path:"file",message:J,code:Y}],warnings:[],filePath:Q,fileType:"plugin"}}let x;try{x=v(B)}catch(X){return{success:!1,errors:[{path:"json",message:`Invalid JSON syntax: ${W(X)}`}],warnings:[],filePath:Q,fileType:"plugin"}}if(x&&typeof x==="object"){let X=x;if(X.commands)(Array.isArray(X.commands)?X.commands:[X.commands]).forEach((J,K)=>{if(typeof J==="string")w(J,`commands[${K}]`,q)});if(X.agents)(Array.isArray(X.agents)?X.agents:[X.agents]).forEach((J,K)=>{if(typeof J==="string")w(J,`agents[${K}]`,q)});if(X.skills)(Array.isArray(X.skills)?X.skills:[X.skills]).forEach((J,K)=>{if(typeof J==="string")w(J,`skills[${K}]`,q)})}let z=x;if(typeof x==="object"&&x!==null){let X=x,Y=Object.keys(X).filter((J)=>Iq.has(J));if(Y.length>0){let J={...X};for(let K of Y)delete J[K],$.push({path:K,message:`Field '${K}' belongs in the marketplace entry (marketplace.json), `+"not plugin.json. It's harmless here but unused \u2014 Claude Code "+"ignores it at load time."});z=J}}let G=d().strict().safeParse(z);if(!G.success)q.push(...F(G.error));if(G.success){let X=G.data;if(!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(X.name))$.push({path:"name",message:`Plugin name "${X.name}" is not kebab-case. Claude Code accepts it, but the Claude.ai marketplace sync requires kebab-case (lowercase letters, digits, and hyphens only, e.g., "my-plugin").`});if(!X.version)$.push({path:"version",message:'No version specified. Consider adding a version following semver (e.g., "1.0.0")'});if(!X.description)$.push({path:"description",message:"No description provided. Adding a description helps users understand what your plugin does"});if(!X.author)$.push({path:"author",message:"No author information provided. Consider adding author details for plugin attribution"})}return{success:q.length===0,errors:q,warnings:$,filePath:Q,fileType:"plugin"}}async function k(Z){let q=[],$=[],Q=H.resolve(Z),B;try{B=await A(Q,{encoding:"utf-8"})}catch(X){let Y=O(X),J;if(Y==="ENOENT")J=`File not found: ${Q}`;else if(Y==="EISDIR")J=`Path is not a file: ${Q}`;else J=`Failed to read file: ${W(X)}`;return{success:!1,errors:[{path:"file",message:J,code:Y}],warnings:[],filePath:Q,fileType:"marketplace"}}let x;try{x=v(B)}catch(X){return{success:!1,errors:[{path:"json",message:`Invalid JSON syntax: ${W(X)}`}],warnings:[],filePath:Q,fileType:"marketplace"}}if(x&&typeof x==="object"){let X=x;if(Array.isArray(X.plugins))X.plugins.forEach((Y,J)=>{if(Y&&typeof Y==="object"&&"source"in Y){let K=Y.source;if(typeof K==="string")w(K,`plugins[${J}].source`,q,Mq(K));if(K&&typeof K==="object"&&"path"in K&&typeof K.path==="string")w(K.path,`plugins[${J}].source.path`,q)}})}let G=g().extend({plugins:Aq.array(u().strict())}).strict().safeParse(x);if(!G.success)q.push(...F(G.error));if(G.success){let X=G.data;if(!X.plugins||X.plugins.length===0)$.push({path:"plugins",message:"Marketplace has no plugins defined"});if(X.plugins){X.plugins.forEach((K,U)=>{if(X.plugins.filter((R)=>R.name===K.name).length>1)q.push({path:`plugins[${U}].name`,message:`Duplicate plugin name "${K.name}" found in marketplace`})});let Y=H.dirname(Q),J=H.basename(Y)===".claude-plugin"?H.dirname(Y):Y;for(let[K,U]of X.plugins.entries()){if(!U.version||typeof U.source!=="string"||!U.source.startsWith("./"))continue;let T=H.join(J,U.source,".claude-plugin","plugin.json"),R;try{let i=await A(T,{encoding:"utf-8"}),b=v(i);if(typeof b.version==="string")R=b.version}catch{continue}if(R&&R!==U.version)$.push({path:`plugins[${K}].version`,message:`Entry declares version "${U.version}" but ${U.source}/.claude-plugin/plugin.json says "${R}". `+"At install time, plugin.json wins (calculatePluginVersion precedence) \u2014 the entry version is silently ignored. "+`Update this entry to "${R}" to match.`})}}if(!X.metadata?.description)$.push({path:"metadata.description",message:"No marketplace description provided. Adding a description helps users understand what this marketplace offers"})}return{success:q.length===0,errors:q,warnings:$,filePath:Q,fileType:"marketplace"}}function Eq(Z,q,$){let Q=[],B=[],x=q.match(n);if(!x)return B.push({path:"frontmatter",message:"No frontmatter block found. Add YAML frontmatter between --- delimiters at the top of the file to set description and other metadata."}),{success:!0,errors:Q,warnings:B,filePath:Z,fileType:$};let z=x[1]||"",G;try{G=h(z)}catch(K){return Q.push({path:"frontmatter",message:`YAML frontmatter failed to parse: ${W(K)}. At runtime this ${$} loads with empty metadata (all frontmatter fields silently dropped).`}),{success:!1,errors:Q,warnings:B,filePath:Z,fileType:$}}if(G===null||typeof G!=="object"||Array.isArray(G))return Q.push({path:"frontmatter",message:`Frontmatter must be a YAML mapping (key: value pairs), got ${Array.isArray(G)?"an array":G===null?"null":typeof G}.`}),{success:!1,errors:Q,warnings:B,filePath:Z,fileType:$};let X=G;if(X.description!==void 0){let K=X.description;if(typeof K!=="string"&&typeof K!=="number"&&typeof K!=="boolean"&&K!==null)Q.push({path:"description",message:`description must be a string, got ${Array.isArray(K)?"array":typeof K}. At runtime this value is dropped.`})}else B.push({path:"description",message:`No description in frontmatter. A description helps users and Claude understand when to use this ${$}.`});if(X.name!==void 0&&X.name!==null&&typeof X.name!=="string")Q.push({path:"name",message:`name must be a string, got ${typeof X.name}.`});let Y=X["allowed-tools"];if(Y!==void 0&&Y!==null){if(typeof Y!=="string"&&!Array.isArray(Y))Q.push({path:"allowed-tools",message:`allowed-tools must be a string or array of strings, got ${typeof Y}.`});else if(Array.isArray(Y)&&Y.some((K)=>typeof K!=="string"))Q.push({path:"allowed-tools",message:"allowed-tools array must contain only strings."})}let J=X.shell;if(J!==void 0&&J!==null)if(typeof J!=="string")Q.push({path:"shell",message:`shell must be a string, got ${typeof J}.`});else{let K=J.trim().toLowerCase();if(K!=="bash"&&K!=="powershell")Q.push({path:"shell",message:`shell must be 'bash' or 'powershell', got '${J}'.`})}return{success:Q.length===0,errors:Q,warnings:B,filePath:Z,fileType:$}}async function Nq(Z){let q;try{q=await A(Z,{encoding:"utf-8"})}catch(B){if(O(B)==="ENOENT")return{success:!0,errors:[],warnings:[],filePath:Z,fileType:"hooks"};return{success:!1,errors:[{path:"file",message:`Failed to read file: ${W(B)}`}],warnings:[],filePath:Z,fileType:"hooks"}}let $;try{$=v(q)}catch(B){return{success:!1,errors:[{path:"json",message:`Invalid JSON syntax: ${W(B)}. At runtime this breaks the entire plugin load.`}],warnings:[],filePath:Z,fileType:"hooks"}}let Q=c().safeParse($);if(!Q.success)return{success:!1,errors:F(Q.error),warnings:[],filePath:Z,fileType:"hooks"};return{success:!0,errors:[],warnings:[],filePath:Z,fileType:"hooks"}}async function l(Z,q){let $;try{$=await vq(Z,{withFileTypes:!0})}catch(B){let x=O(B);if(x==="ENOENT"||x==="ENOTDIR")return[];throw B}if(q)return $.filter((B)=>B.isDirectory()).map((B)=>H.join(Z,B.name,"SKILL.md"));let Q=[];for(let B of $){let x=H.join(Z,B.name);if(B.isDirectory())Q.push(...await l(x,!1));else if(B.isFile()&&B.name.toLowerCase().endsWith(".md"))Q.push(x)}return Q}async function eq(Z){let q=[],$=[["skill",H.join(Z,"skills")],["agent",H.join(Z,"agents")],["command",H.join(Z,"commands")]];for(let[B,x]of $){let z=await l(x,B==="skill");for(let G of z){let X;try{X=await A(G,{encoding:"utf-8"})}catch(J){if(C(J))continue;q.push({success:!1,errors:[{path:"file",message:`Failed to read: ${W(J)}`}],warnings:[],filePath:G,fileType:B});continue}let Y=Eq(G,X,B);if(Y.errors.length>0||Y.warnings.length>0)q.push(Y)}}let Q=await Nq(H.join(Z,"hooks","hooks.json"));if(Q.errors.length>0||Q.warnings.length>0)q.push(Q);return q}async function qQ(Z){let q=H.resolve(Z),$=null;try{$=await Rq(q)}catch(B){if(!C(B))throw B}if($?.isDirectory()){let B=H.join(q,".claude-plugin","marketplace.json"),x=await k(B);if(x.errors[0]?.code!=="ENOENT")return x;let z=H.join(q,".claude-plugin","plugin.json"),G=await j(z);if(G.errors[0]?.code!=="ENOENT")return G;return{success:!1,errors:[{path:"directory",message:"No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json"}],warnings:[],filePath:q,fileType:"plugin"}}switch(wq(Z)){case"plugin":return j(Z);case"marketplace":return k(Z);case"unknown":{try{let B=await A(q,{encoding:"utf-8"}),x=v(B);if(Array.isArray(x.plugins))return k(Z)}catch(B){if(O(B)==="ENOENT")return{success:!1,errors:[{path:"file",message:`File not found: ${q}`}],warnings:[],filePath:q,fileType:"plugin"}}return j(Z)}}}var Iq;var _q=N(()=>{_();Uq();f();Oq();Wq();Iq=new Set(["category","source","tags","strict","id"])});
3
3
  export{kq as Xc,a as Yc,gq as Zc,hq as _c,Vq as $c,eq as ad,qQ as bd,_q as cd};
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{Ag as u,zg as k}from"./cli-ja540nr7.js";import{C8 as z,D8 as H,J8 as y,r8 as $,s8 as W}from"./cli-4ewb3q42.js";import{I9 as B,J9 as N,K9 as O,M9 as L,d_ as q,h_ as w,l_ as V,p_ as C,v_ as X,y_ as E}from"./cli-hke6r0q8.js";import{bda as A,e$ as Z}from"./cli-3ac555qw.js";u();A();N();W();L();E();C();y();w();import P from"axios";import{dirname as F,join as x}from"path";var D=z(new Date);function T(){return x($.errors(),D+".jsonl")}function J(G){return x($.mcpLogs(G),D+".jsonl")}function S(G){let K=B(G);return{write(Q){K.write(q(Q)+`
2
+ import{Ag as u,zg as k}from"./cli-a1dqnvy2.js";import{E8 as z,F8 as H,L8 as y,t8 as $,u8 as W}from"./cli-8kpqq0ea.js";import{A_ as E,K9 as B,L9 as N,M9 as O,O9 as L,f_ as q,j_ as w,n_ as V,r_ as C,x_ as X}from"./cli-awb77t95.js";import{dda as A,g$ as Z}from"./cli-tafg3e9w.js";u();A();N();W();L();E();C();y();w();import P from"axios";import{dirname as F,join as x}from"path";var D=z(new Date);function T(){return x($.errors(),D+".jsonl")}function J(G){return x($.mcpLogs(G),D+".jsonl")}function S(G){let K=B(G);return{write(Q){K.write(q(Q)+`
3
3
  `)},flush:K.flush,dispose:K.dispose}}var _=new Map;function R(G){let K=_.get(G);if(!K){let Q=F(G);K=S({writeFn:(U)=>{try{V().appendFileSync(G,U)}catch{V().mkdirSync(Q),V().appendFileSync(G,U)}},flushIntervalMs:1000,maxBufferSize:50}),_.set(G,K),O(async()=>K?.dispose())}return K}function f(G,K){if(process.env.USER_TYPE!=="ant")return;let Q={timestamp:new Date().toISOString(),...K,cwd:V().cwd(),userType:process.env.USER_TYPE,sessionId:Z(),version:MACRO.VERSION};R(G).write(Q)}function v(G){if(typeof G==="string")return G;if(G&&typeof G==="object"){let K=G;if(typeof K.message==="string")return K.message;if(typeof K.error==="object"&&K.error&&"message"in K.error&&typeof K.error.message==="string")return K.error.message}return}function I(G){let K=G.stack||G.message,Q="";if(P.isAxiosError(G)&&G.config?.url){let U=[`url=${G.config.url}`];if(G.response?.status!==void 0)U.push(`status=${G.response.status}`);let Y=v(G.response?.data);if(Y)U.push(`body=${Y}`);Q=`[${U.join(",")}] `}X(`${G.name}: ${Q}${K}`,{level:"error"}),f(T(),{error:`${Q}${K}`})}function j(G,K){X(`MCP server "${G}" ${K}`,{level:"error"});let Q=J(G),Y={error:K instanceof Error?K.stack||K.message:String(K),timestamp:new Date().toISOString(),sessionId:Z(),cwd:V().cwd()};R(Q).write(Y)}function b(G,K){X(`MCP server "${G}": ${K}`);let Q=J(G),U={debug:K,timestamp:new Date().toISOString(),sessionId:Z(),cwd:V().cwd()};R(Q).write(U)}function M(){H({logError:I,logMCPError:j,logMCPDebug:b,getErrorsPath:T,getMCPLogsPath:J}),X("Error log sink initialized")}function r(){M(),k()}
4
4
  export{r as F};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{cda as O,eda as X,fda as W}from"./cli-w1d8n9g3.js";var Y={};X(Y,{resetCachedMCState:()=>S,markToolsSentToAPI:()=>P,isModelSupportedForCacheEditing:()=>N,isCachedMicrocompactEnabled:()=>G,getCoordinatorUserContext:()=>w,getCachedMCConfig:()=>I,default:()=>z,createCachedMCState:()=>C,checkProtectedNamespace:()=>j,__stubMissing:()=>k});var J=function(){},K,F,z,k=!0,C,G,N,I,P,S,j,w;var Z=W(()=>{K={get(q,B){if(B==="__esModule")return!0;if(B==="default")return new Proxy(J,K);if(B===Symbol.toPrimitive)return()=>{return};if(B===Symbol.iterator)return function*(){};if(B===Symbol.asyncIterator)return async function*(){};if(B==="then")return;return new Proxy(J,K)},apply(){return new Proxy(J,K)},construct(){return new Proxy(J,K)}},F=new Proxy(J,K),z=F,C=F,G=F,N=F,I=F,P=F,S=F,j=F,w=F});import T from"lodash-es/memoize.js";import{homedir as A}from"os";import{join as H}from"path";function f(){return H(D(),"teams")}function h(q){let B=process.env.NODE_OPTIONS;if(!B)return!1;return B.split(/\s+/).includes(q)}function M(q){if(!q)return!1;if(typeof q==="boolean")return q;let B=q.toLowerCase().trim();return["1","true","yes","on"].includes(B)}function E(q){if(q===void 0)return!1;if(typeof q==="boolean")return!q;if(!q)return!1;let B=q.toLowerCase().trim();return["0","false","no","off"].includes(B)}function m(){return M(process.env.CLAUDE_CODE_SIMPLE)||process.argv.includes("--bare")}function g(q){let B={};if(q)for(let L of q){let[Q,...U]=L.split("=");if(!Q||U.length===0)throw Error(`Invalid environment variable format: ${L}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`);B[Q]=U.join("=")}return B}function u(){return process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||"us-east-1"}function $(){return process.env.CLOUD_ML_REGION||"us-east5"}function _(){return M(process.env.CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR)}function d(){return process.env.USER_TYPE==="ant"&&M(process.env.COO_RUNNING_ON_HOMESPACE)}function V(){if(process.env.USER_TYPE==="ant")return(Z(),O(Y)).checkProtectedNamespace();return!1}function i(q){if(q){let B=c.find(([L])=>q.startsWith(L));if(B)return process.env[B[1]]||$()}return $()}var D,c;var x=W(()=>{D=T(()=>{return(process.env.CLAUDE_CONFIG_DIR??H(A(),".claude")).normalize("NFC")},()=>process.env.CLAUDE_CONFIG_DIR);c=[["claude-haiku-4-5","VERTEX_REGION_CLAUDE_HAIKU_4_5"],["claude-3-5-haiku","VERTEX_REGION_CLAUDE_3_5_HAIKU"],["claude-3-5-sonnet","VERTEX_REGION_CLAUDE_3_5_SONNET"],["claude-3-7-sonnet","VERTEX_REGION_CLAUDE_3_7_SONNET"],["claude-opus-4-1","VERTEX_REGION_CLAUDE_4_1_OPUS"],["claude-opus-4","VERTEX_REGION_CLAUDE_4_0_OPUS"],["claude-sonnet-4-6","VERTEX_REGION_CLAUDE_4_6_SONNET"],["claude-sonnet-4-5","VERTEX_REGION_CLAUDE_4_5_SONNET"],["claude-sonnet-4","VERTEX_REGION_CLAUDE_4_0_SONNET"]]});
3
- export{D as F_,f as G_,h as H_,M as I_,E as J_,m as K_,g as L_,u as M_,$ as N_,_ as O_,d as P_,V as Q_,i as R_,x as S_};
2
+ import{eda as O,gda as X,hda as W}from"./cli-qwx84m9c.js";var Y={};X(Y,{resetCachedMCState:()=>S,markToolsSentToAPI:()=>P,isModelSupportedForCacheEditing:()=>N,isCachedMicrocompactEnabled:()=>G,getCoordinatorUserContext:()=>w,getCachedMCConfig:()=>I,default:()=>z,createCachedMCState:()=>C,checkProtectedNamespace:()=>j,__stubMissing:()=>k});var J=function(){},K,F,z,k=!0,C,G,N,I,P,S,j,w;var Z=W(()=>{K={get(q,B){if(B==="__esModule")return!0;if(B==="default")return new Proxy(J,K);if(B===Symbol.toPrimitive)return()=>{return};if(B===Symbol.iterator)return function*(){};if(B===Symbol.asyncIterator)return async function*(){};if(B==="then")return;return new Proxy(J,K)},apply(){return new Proxy(J,K)},construct(){return new Proxy(J,K)}},F=new Proxy(J,K),z=F,C=F,G=F,N=F,I=F,P=F,S=F,j=F,w=F});import T from"lodash-es/memoize.js";import{homedir as A}from"os";import{join as H}from"path";function f(){return H(D(),"teams")}function h(q){let B=process.env.NODE_OPTIONS;if(!B)return!1;return B.split(/\s+/).includes(q)}function M(q){if(!q)return!1;if(typeof q==="boolean")return q;let B=q.toLowerCase().trim();return["1","true","yes","on"].includes(B)}function E(q){if(q===void 0)return!1;if(typeof q==="boolean")return!q;if(!q)return!1;let B=q.toLowerCase().trim();return["0","false","no","off"].includes(B)}function m(){return M(process.env.CLAUDE_CODE_SIMPLE)||process.argv.includes("--bare")}function g(q){let B={};if(q)for(let L of q){let[Q,...U]=L.split("=");if(!Q||U.length===0)throw Error(`Invalid environment variable format: ${L}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`);B[Q]=U.join("=")}return B}function u(){return process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||"us-east-1"}function $(){return process.env.CLOUD_ML_REGION||"us-east5"}function _(){return M(process.env.CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR)}function d(){return process.env.USER_TYPE==="ant"&&M(process.env.COO_RUNNING_ON_HOMESPACE)}function V(){if(process.env.USER_TYPE==="ant")return(Z(),O(Y)).checkProtectedNamespace();return!1}function i(q){if(q){let B=c.find(([L])=>q.startsWith(L));if(B)return process.env[B[1]]||$()}return $()}var D,c;var x=W(()=>{D=T(()=>{return(process.env.CLAUDE_CONFIG_DIR??H(A(),".claude")).normalize("NFC")},()=>process.env.CLAUDE_CONFIG_DIR);c=[["claude-haiku-4-5","VERTEX_REGION_CLAUDE_HAIKU_4_5"],["claude-3-5-haiku","VERTEX_REGION_CLAUDE_3_5_HAIKU"],["claude-3-5-sonnet","VERTEX_REGION_CLAUDE_3_5_SONNET"],["claude-3-7-sonnet","VERTEX_REGION_CLAUDE_3_7_SONNET"],["claude-opus-4-1","VERTEX_REGION_CLAUDE_4_1_OPUS"],["claude-opus-4","VERTEX_REGION_CLAUDE_4_0_OPUS"],["claude-sonnet-4-6","VERTEX_REGION_CLAUDE_4_6_SONNET"],["claude-sonnet-4-5","VERTEX_REGION_CLAUDE_4_5_SONNET"],["claude-sonnet-4","VERTEX_REGION_CLAUDE_4_0_SONNET"]]});
3
+ export{D as H_,f as I_,h as J_,M as K_,E as L_,m as M_,g as N_,u as O_,$ as P_,_ as Q_,d as R_,V as S_,i as T_,x as U_};