tokentracker-cli 1.3.3 → 1.3.5

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 (187) hide show
  1. package/README.de.md +5 -5
  2. package/README.ja.md +3 -3
  3. package/README.ko.md +3 -3
  4. package/README.md +6 -5
  5. package/README.zh-CN.md +3 -3
  6. package/THIRD_PARTY_NOTICES.md +92 -0
  7. package/dashboard/dist/THIRD_PARTY_NOTICES.txt +92 -0
  8. package/dashboard/dist/assets/AchievementBadge-Dazs3pEa.js +1 -0
  9. package/dashboard/dist/assets/AchievementsPage-LWnxZvmw.js +2 -0
  10. package/dashboard/dist/assets/{AchievementsSection-CDUUEfIi.js → AchievementsSection-BLqczmU9.js} +1 -1
  11. package/dashboard/dist/assets/BadgeDetailModal-B_n4aj2S.js +1 -0
  12. package/dashboard/dist/assets/{BotAnimated-Dx_vvTtC.js → BotAnimated-KDWI_YcZ.js} +1 -1
  13. package/dashboard/dist/assets/Card-BYoxd4OC.js +1 -0
  14. package/dashboard/dist/assets/CloudCheckoutPage-BR2_B03P.js +1 -0
  15. package/dashboard/dist/assets/CloudPage-DL5RkJKK.js +1 -0
  16. package/dashboard/dist/assets/CloudUsageExport-C_DqZKo1.js +4 -0
  17. package/dashboard/dist/assets/CommandPalette-DkCaIQI4.js +1 -0
  18. package/dashboard/dist/assets/CommunityStatsModal-pX9OePi4.js +1 -0
  19. package/dashboard/dist/assets/{ConfirmModal-BQ-xB1S_.js → ConfirmModal-tkgZwz4u.js} +1 -1
  20. package/dashboard/dist/assets/Controls-MTUhGWy8.js +1 -0
  21. package/dashboard/dist/assets/DashboardPage-SOx-A7lH.js +1 -0
  22. package/dashboard/dist/assets/DateRangePopover-B-BMOm3O.js +1 -0
  23. package/dashboard/dist/assets/{DevicePage-Dg6XkIaY.js → DevicePage-DSK9lm7v.js} +1 -1
  24. package/dashboard/dist/assets/DialogClose-uVUNu4rg.js +1 -0
  25. package/dashboard/dist/assets/DialogDescription-DBqGGWNj.js +1 -0
  26. package/dashboard/dist/assets/DialogTitle-B-VifiA3.js +1 -0
  27. package/dashboard/dist/assets/{FadeIn-ChVf45WW.js → FadeIn-B6lrj4uo.js} +1 -1
  28. package/dashboard/dist/assets/{HeaderGithubStar-B740_G7a.js → HeaderGithubStar-Cx5zOhXa.js} +1 -1
  29. package/dashboard/dist/assets/{HoverTooltip-BzP5FudR.js → HoverTooltip-DY1ENf69.js} +1 -1
  30. package/dashboard/dist/assets/{IpCheckPage-BuZH3F14.js → IpCheckPage-D6TEq64d.js} +1 -1
  31. package/dashboard/dist/assets/LandingPage-OdZUfq--.js +2 -0
  32. package/dashboard/dist/assets/LeaderboardPage-DCK5xcAt.js +2 -0
  33. package/dashboard/dist/assets/LeaderboardProBadge-CBXJ1u_m.js +1 -0
  34. package/dashboard/dist/assets/{LeaderboardProfileModal-OUZvO6u-.js → LeaderboardProfileModal-Ccdzb7QK.js} +4 -4
  35. package/dashboard/dist/assets/{LeaderboardProfilePage-bHI1oTEK.js → LeaderboardProfilePage-CFXlZ0fL.js} +2 -2
  36. package/dashboard/dist/assets/LimitsPage-5krjm-g9.js +9 -0
  37. package/dashboard/dist/assets/{LocalOnlyNotice-BaEq6qN7.js → LocalOnlyNotice-Rk1B8PaZ.js} +1 -1
  38. package/dashboard/dist/assets/LoginCard-DTTIm8vk.js +1 -0
  39. package/dashboard/dist/assets/LoginModal-BNcDdjfr.js +1 -0
  40. package/dashboard/dist/assets/LoginPage-CQgXP7Ee.js +1 -0
  41. package/dashboard/dist/assets/{PetPage-BPBsUHyL.js → PetPage-Cw_kAPRs.js} +1 -1
  42. package/dashboard/dist/assets/PopoverPopup-NYiGE8A2.js +1 -0
  43. package/dashboard/dist/assets/{ProviderIcon-BshO2uER.js → ProviderIcon-Bp7iFJ_m.js} +1 -1
  44. package/dashboard/dist/assets/{ResetPasswordPage-RTFTD8Dr.js → ResetPasswordPage-Cf9kAWDW.js} +1 -1
  45. package/dashboard/dist/assets/Select-kIcvQFAo.js +1 -0
  46. package/dashboard/dist/assets/SelectItemText-BpIsAg3b.js +1 -0
  47. package/dashboard/dist/assets/{SelfHostPage-BlwTt8XM.js → SelfHostPage-Ch2vvSwI.js} +1 -1
  48. package/dashboard/dist/assets/{ServiceStatusPage-BkIcJpYK.js → ServiceStatusPage-hoYBvGbu.js} +1 -1
  49. package/dashboard/dist/assets/SessionsPage-BzRB6q-Z.js +3 -0
  50. package/dashboard/dist/assets/SessionsPage-GV2fuNmd.css +1 -0
  51. package/dashboard/dist/assets/SettingsPage-DRl2uX-i.js +2 -0
  52. package/dashboard/dist/assets/SkillsPage-CkqThTZL.js +1 -0
  53. package/dashboard/dist/assets/{TokenGalaxy-DiXUpXKF.js → TokenGalaxy-eLG-UIZY.js} +1 -1
  54. package/dashboard/dist/assets/TooltipPopup-bnMJyilQ.js +1 -0
  55. package/dashboard/dist/assets/TrendMonitor-X7-aGzIv.js +19 -0
  56. package/dashboard/dist/assets/WidgetsPage-CGznIzrW.js +1 -0
  57. package/dashboard/dist/assets/{WrappedPage-ClEo-RmR.js → WrappedPage-p31-uUoF.js} +1 -1
  58. package/dashboard/dist/assets/__vite-browser-external-2g_4s3ot.js +45 -0
  59. package/dashboard/dist/assets/__vite-browser-external-LpFw4zXh.css +1 -0
  60. package/dashboard/dist/assets/agent-logos-2TVT3fIE.js +1 -0
  61. package/dashboard/dist/assets/arrow-left-DL0hAp_7.js +1 -0
  62. package/dashboard/dist/assets/{arrow-right-CwBz5dwb.js → arrow-right-DFCpnV_9.js} +1 -1
  63. package/dashboard/dist/assets/{arrow-up-right-jPmRN562.js → arrow-up-right-DLvfE0Wu.js} +1 -1
  64. package/dashboard/dist/assets/calendar-days-B0aDoKSG.js +1 -0
  65. package/dashboard/dist/assets/{check-CKwHc4Hv.js → check-C_cfrxiz.js} +1 -1
  66. package/dashboard/dist/assets/chevron-down-Ck8ml43e.js +1 -0
  67. package/dashboard/dist/assets/cloud-checkout-PYnwNfdH.js +1 -0
  68. package/dashboard/dist/assets/composite-INW-ELWX.js +1 -0
  69. package/dashboard/dist/assets/download-B7uokeIo.js +1 -0
  70. package/dashboard/dist/assets/{external-link-B5yXxdPy.js → external-link-CI3crg4K.js} +1 -1
  71. package/dashboard/dist/assets/{flame-CKjAluj_.js → flame-DCzvFKV1.js} +1 -1
  72. package/dashboard/dist/assets/{format-tokens-mk49THtv.js → format-tokens-CSTEYK2m.js} +1 -1
  73. package/dashboard/dist/assets/gift-dEHDFMc6.js +1 -0
  74. package/dashboard/dist/assets/{host-mode-efKlSYjX.js → host-mode-r2SW9Mdv.js} +1 -1
  75. package/dashboard/dist/assets/{icons-ZB1ZthjH.js → icons-q-3zvEkh.js} +1 -1
  76. package/dashboard/dist/assets/{index-BImBG3eS.js → index-BV7qwUw4.js} +1 -1
  77. package/dashboard/dist/assets/{index-BgdM7kBl.js → index-BbrsgHf4.js} +1 -1
  78. package/dashboard/dist/assets/{index-DweUMAUD.js → index-CyHYj9XI.js} +1 -1
  79. package/dashboard/dist/assets/info-BBdY9hV4.js +1 -0
  80. package/dashboard/dist/assets/{link-2-Dn2soiyd.js → link-2-CLPePfXs.js} +1 -1
  81. package/dashboard/dist/assets/{loader-circle-CNT630zn.js → loader-circle-ETrjzfmn.js} +1 -1
  82. package/dashboard/dist/assets/{modifiers.esm-WPx0bc2K.js → modifiers.esm-DHqnp2ol.js} +1 -1
  83. package/dashboard/dist/assets/module-BNnaKM__.js +3 -0
  84. package/dashboard/dist/assets/monitor-smartphone-D1kdzrdb.js +1 -0
  85. package/dashboard/dist/assets/play-Cxp-ronD.js +1 -0
  86. package/dashboard/dist/assets/plus-4n94VzDK.js +1 -0
  87. package/dashboard/dist/assets/provider-display-CRlbeO7t.js +42 -0
  88. package/dashboard/dist/assets/{react-B7SkZTgg.js → react-DlHjGQFN.js} +1 -1
  89. package/dashboard/dist/assets/safePolygon-CVZ27a2_.js +1 -0
  90. package/dashboard/dist/assets/{search-Ol3OZBm4.js → search-BDPr56_h.js} +1 -1
  91. package/dashboard/dist/assets/{server-DFCbznC7.js → server-Bm7fHvVa.js} +1 -1
  92. package/dashboard/dist/assets/{shield-check-YcmLwVZ6.js → shield-check-DtT8ACzI.js} +1 -1
  93. package/dashboard/dist/assets/{skills-api-C-9vK884.js → skills-api-Dc1-2qu6.js} +1 -1
  94. package/dashboard/dist/assets/{sortable.esm-CKC9NuR-.js → sortable.esm-B-qN-Xk2.js} +1 -1
  95. package/dashboard/dist/assets/store-gHeBU8dQ.js +1 -0
  96. package/dashboard/dist/assets/{terminal-B3_fCLFs.js → terminal-D4VZbvhg.js} +1 -1
  97. package/dashboard/dist/assets/{trash-CZGfgbFa.js → trash-BZtLAFQy.js} +1 -1
  98. package/dashboard/dist/assets/{use-community-stats-CW-qkYn7.js → use-community-stats-BdqndrbB.js} +1 -1
  99. package/dashboard/dist/assets/{use-latest-request-guard-DHv7vfFE.js → use-latest-request-guard-DhGg1cDS.js} +1 -1
  100. package/dashboard/dist/assets/use-limits-display-prefs-D3HOcRFv.js +1 -0
  101. package/dashboard/dist/assets/{use-native-settings-CWiLqfZh.js → use-native-settings-BniKwA_n.js} +1 -1
  102. package/dashboard/dist/assets/{use-ordered-list-Df8pw-WJ.js → use-ordered-list-b09H7EHq.js} +1 -1
  103. package/dashboard/dist/assets/use-pet-settings-CPZdlq_e.js +2 -0
  104. package/dashboard/dist/assets/use-reduced-motion-D1gcKJUo.js +1 -0
  105. package/dashboard/dist/assets/{use-transform-BHwEAfmO.js → use-transform-CIdxjmI8.js} +1 -1
  106. package/dashboard/dist/assets/use-usage-limits-eJlU65yY.js +1 -0
  107. package/dashboard/dist/assets/{useCurrency-pwClnCZ5.js → useCurrency-CM22CmAq.js} +1 -1
  108. package/dashboard/dist/assets/usePositioner-B3l2ulTw.js +1 -0
  109. package/dashboard/dist/assets/{useTokenFormat-BMvVAe6V.js → useTokenFormat-D7nzgxKw.js} +1 -1
  110. package/dashboard/dist/assets/zap-Daxct1WV.js +1 -0
  111. package/dashboard/dist/index.html +14 -12
  112. package/dashboard/dist/ip-check.html +2 -2
  113. package/dashboard/dist/leaderboard.html +2 -2
  114. package/dashboard/dist/llms.txt +2 -2
  115. package/dashboard/dist/share.html +2 -2
  116. package/package.json +3 -2
  117. package/src/commands/init.js +43 -1
  118. package/src/commands/status.js +27 -0
  119. package/src/commands/sync.js +54 -4
  120. package/src/commands/uninstall.js +19 -0
  121. package/src/lib/claude-config.js +47 -15
  122. package/src/lib/codex-rollout-parser.js +11 -3
  123. package/src/lib/command-runner.js +15 -1
  124. package/src/lib/cursor-config.js +2 -1
  125. package/src/lib/gemini-config.js +3 -2
  126. package/src/lib/local-api.js +13 -3
  127. package/src/lib/notify-command.js +38 -0
  128. package/src/lib/openclaw-session-plugin.js +47 -14
  129. package/src/lib/passive-mode.js +12 -0
  130. package/src/lib/pricing/curated-overrides.json +42 -5
  131. package/src/lib/pricing/matcher.js +14 -5
  132. package/src/lib/pricing/seed-snapshot.json +1 -1
  133. package/src/lib/rollout.js +150 -28
  134. package/src/lib/session-analytics.js +108 -9
  135. package/src/lib/usage-limits.js +183 -20
  136. package/src/lib/zcode-limits.js +218 -18
  137. package/src/lib/zcode-reset-credits.js +66 -0
  138. package/dashboard/dist/assets/AchievementBadge-BaqdyZaV.js +0 -1
  139. package/dashboard/dist/assets/AchievementsPage-B4Ju0guv.js +0 -2
  140. package/dashboard/dist/assets/BadgeDetailModal-B-XMJAvL.js +0 -1
  141. package/dashboard/dist/assets/Card-D-5mABVt.js +0 -1
  142. package/dashboard/dist/assets/CloudCheckoutPage-BELoh56h.js +0 -1
  143. package/dashboard/dist/assets/CloudPage-CfBruNxe.js +0 -1
  144. package/dashboard/dist/assets/CloudUsageExport-BoFU7xCT.js +0 -4
  145. package/dashboard/dist/assets/CommandPalette-BmmKZWn-.js +0 -1
  146. package/dashboard/dist/assets/CommunityStatsModal-BF77zVhN.js +0 -1
  147. package/dashboard/dist/assets/Controls-BnTeX7T4.js +0 -1
  148. package/dashboard/dist/assets/DashboardPage-BWulHa5J.js +0 -1
  149. package/dashboard/dist/assets/DialogClose-DAyilsH-.js +0 -1
  150. package/dashboard/dist/assets/DialogDescription-j4XnRy6y.js +0 -1
  151. package/dashboard/dist/assets/DialogTitle-B1iNGD2S.js +0 -1
  152. package/dashboard/dist/assets/LandingPage-Dtgq_caz.js +0 -2
  153. package/dashboard/dist/assets/LeaderboardPage-Di1kEg2O.js +0 -2
  154. package/dashboard/dist/assets/LeaderboardProBadge-h8FfR0au.js +0 -1
  155. package/dashboard/dist/assets/LimitsPage-DKojB73_.js +0 -8
  156. package/dashboard/dist/assets/LoginCard-Dn5Xy4If.js +0 -1
  157. package/dashboard/dist/assets/LoginModal-C5h-5GOA.js +0 -1
  158. package/dashboard/dist/assets/LoginPage-BpX8Tgjj.js +0 -1
  159. package/dashboard/dist/assets/PopoverPopup-CVTiEVHs.js +0 -1
  160. package/dashboard/dist/assets/Select-CtTceC4T.js +0 -1
  161. package/dashboard/dist/assets/SelectItemText-C7xi8iGp.js +0 -1
  162. package/dashboard/dist/assets/SessionsPage-BngTWN7Q.css +0 -1
  163. package/dashboard/dist/assets/SessionsPage-okHobk_L.js +0 -3
  164. package/dashboard/dist/assets/SettingsPage-C-cc6wcF.js +0 -2
  165. package/dashboard/dist/assets/SkillsPage-D2LlKKJN.js +0 -1
  166. package/dashboard/dist/assets/TrendMonitor-C88S-5aa.js +0 -19
  167. package/dashboard/dist/assets/WidgetsPage-WsEFPNwp.js +0 -1
  168. package/dashboard/dist/assets/__vite-browser-external-DFRX9dp-.css +0 -1
  169. package/dashboard/dist/assets/__vite-browser-external-DUJeOWgd.js +0 -45
  170. package/dashboard/dist/assets/agent-logos-BM9jlReI.js +0 -1
  171. package/dashboard/dist/assets/arrow-left-BEM-HVmC.js +0 -1
  172. package/dashboard/dist/assets/cloud-checkout-nYNHDFoR.js +0 -1
  173. package/dashboard/dist/assets/composite-B4Z3F65o.js +0 -1
  174. package/dashboard/dist/assets/download-CJUnX1Bs.js +0 -1
  175. package/dashboard/dist/assets/info-CyDY7NYM.js +0 -1
  176. package/dashboard/dist/assets/module-WSx8viXK.js +0 -3
  177. package/dashboard/dist/assets/monitor-smartphone-C-qC0RAt.js +0 -1
  178. package/dashboard/dist/assets/plus-Cx82jb7o.js +0 -1
  179. package/dashboard/dist/assets/provider-display-CodMmiRb.js +0 -42
  180. package/dashboard/dist/assets/safePolygon-CKpREa4K.js +0 -1
  181. package/dashboard/dist/assets/store-C9yWYHfg.js +0 -1
  182. package/dashboard/dist/assets/use-limits-display-prefs-NZ-AAYD5.js +0 -1
  183. package/dashboard/dist/assets/use-pet-settings-Bg2CDprr.js +0 -2
  184. package/dashboard/dist/assets/use-reduced-motion-iDZEUyua.js +0 -1
  185. package/dashboard/dist/assets/use-usage-limits-CSxFFn3_.js +0 -1
  186. package/dashboard/dist/assets/usePositioner-B0j1orGj.js +0 -1
  187. package/dashboard/dist/assets/zap-DvX2aYx5.js +0 -1
@@ -0,0 +1 @@
1
+ import{r as j,aW as we,aX as De,aY as Fe,aZ as Le,a_ as le,a$ as He,b0 as te,b1 as Te,b2 as Q,b3 as ue,b4 as ae,b5 as K,N as ee,b6 as J,b7 as ge,b8 as Xe,b9 as Ce,ba as _,ax as Ye}from"./__vite-browser-external-2g_4s3ot.js";import{i as fe,a as Re,b as _e,g as de,c as ne}from"./composite-INW-ELWX.js";function Ne(e,s){return s!=null&&!fe(s)?0:typeof e=="function"?e():e}function me(e,s,r){const p=Ne(e,r);return typeof p=="number"?p:p?.[s]}function be(e){return typeof e=="function"?e():e}function Pe(e,s){return s||e==="click"||e==="mousedown"}function Be(e){return e?.includes("mouse")&&e!=="mousedown"}function qe(e){const s=j.useCallback(p=>e===void 0?we:e.subscribeStore(p),[e]),r=j.useCallback(()=>e===void 0?void 0:e.store,[e]);return De.useSyncExternalStore(s,r,()=>e?.serverStore)}class pe{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new le,this.restTimeout=new le,this.handleCloseOptions=void 0}static create(){return new pe}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose}const ie=new WeakMap;function ce(e){if(!e.performedPointerEventsMutation)return;const s=e.pointerEventsScopeElement;s&&ie.get(s)===e&&(e.pointerEventsScopeElement?.style.removeProperty("pointer-events"),e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),ie.delete(s)),e.performedPointerEventsMutation=!1,e.pointerEventsScopeElement=null,e.pointerEventsReferenceElement=null,e.pointerEventsFloatingElement=null}function Se(e,s){const{scopeElement:r,referenceElement:p,floatingElement:c}=s,o=ie.get(r);o&&o!==e&&ce(o),ce(e),e.performedPointerEventsMutation=!0,e.pointerEventsScopeElement=r,e.pointerEventsReferenceElement=p,e.pointerEventsFloatingElement=c,ie.set(r,e),r.style.pointerEvents="none",p.style.pointerEvents="auto",c.style.pointerEvents="auto"}function Me(e){const s=e.context.dataRef.current,r=Fe(()=>s.hoverInteractionState??pe.create()).current;return s.hoverInteractionState||(s.hoverInteractionState=r),Le(s.hoverInteractionState.disposeEffect),s.hoverInteractionState}function Ge(e,s={}){const{enabled:r=!0,closeDelay:p=0,nodeId:c}=s,o="rootStore"in e?e.rootStore:e,X=o.useState("open"),S=o.useState("floatingElement"),H=o.useState("domReferenceElement"),{dataRef:Y}=o.context,u=Re(),M=_e(),f=Me(o),U=He(),$=te(()=>Pe(Y.current.openEvent?.type,f.interactedInside)),i=te(()=>Be(Y.current.openEvent?.type)),D=te(()=>{ce(f)});Te(()=>{X||(f.pointerType=void 0,f.restTimeoutPending=!1,f.interactedInside=!1,D())},[X,f,D]),j.useEffect(()=>D,[D]),Te(()=>{if(r&&X&&f.handleCloseOptions?.blockPointerEvents&&i()&&Q(H)&&S){const N=H,F=S,t=ue(S),C=u?.nodesRef.current.find(b=>b.id===M)?.context?.elements.floating;C&&(C.style.pointerEvents="");const k=f.pointerEventsScopeElement!==F?f.pointerEventsScopeElement:null,h=C!==F?C:null,g=f.handleCloseOptions?.getScope?.()??k??h??N.closest("[data-rootownerid]")??t.body;return Se(f,{scopeElement:g,referenceElement:N,floatingElement:F}),()=>{D()}}},[r,X,H,S,f,i,u,M,D]),j.useEffect(()=>{if(!r)return;function N(){return!!(u&&M&&de(u.nodesRef.current,M).length>0)}function F(b){const I=me(p,"close",f.pointerType),q=()=>{o.setOpen(!1,ee(J,b)),u?.events.emit("floating.closed",b)};I?f.openChangeTimeout.start(I,q):(f.openChangeTimeout.clear(),q())}function t(b){const I=ge(b);if(!Xe(I)){f.interactedInside=!1;return}f.interactedInside=I?.closest("[aria-haspopup]")!=null}function C(){f.openChangeTimeout.clear(),U.clear(),u?.events.off("floating.closed",h),D()}function k(b){if(N()&&u){u.events.on("floating.closed",h);return}if(Ce(b.relatedTarget,o.context.triggerElements))return;const I=Y.current.floatingContext?.nodeId??c,q=b.relatedTarget;if(!(u&&I&&Q(q)&&de(u.nodesRef.current,I,!1).some(B=>_(B.context?.elements.floating,q)))){if(f.handler){f.handler(b);return}D(),i()&&!$()&&F(b)}}function h(b){!u||!M||N()||U.start(0,()=>{u.events.off("floating.closed",h),o.setOpen(!1,ee(J,b)),u.events.emit("floating.closed",b)})}const g=S;return ae(g&&K(g,"mouseenter",C),g&&K(g,"mouseleave",k),g&&K(g,"pointerdown",t,!0),()=>{u?.events.off("floating.closed",h)})},[r,S,o,Y,p,c,i,$,D,f,u,M,U])}const Ae={current:null};function Qe(e,s={}){const{enabled:r=!0,delay:p=0,handleClose:c=null,mouseOnly:o=!1,restMs:X=0,move:S=!0,triggerElementRef:H=Ae,externalTree:Y,isActiveTrigger:u=!0,getHandleCloseContext:M,isClosing:f,shouldOpen:U,guardStaleOpen:$=!1}=s,i="rootStore"in e?e.rootStore:e,{dataRef:D,events:N}=i.context,F=Re(Y),t=Me(i),C=j.useRef(!1),k=ne(c),h=ne(p),g=ne(X),b=ne(r),I=ne(U),q=ne(f),x=te(()=>Pe(D.current.openEvent?.type,t.interactedInside)),B=te(()=>I.current?.()!==!1),G=te((v,a,O)=>{const T=i.context.triggerElements;if(T.hasElement(a))return!v||!_(v,a);if(!Q(O))return!1;const Z=O;return T.hasMatchingElement(A=>_(A,Z))&&(!v||!_(v,Z))}),E=te(()=>{if(!t.handler)return;ue(i.select("domReferenceElement")).removeEventListener("mousemove",t.handler),t.handler=void 0}),n=te(()=>{ce(t)});return u&&(t.handleCloseOptions=c?.__options),j.useEffect(()=>E,[E]),j.useEffect(()=>{if(!r)return;function v(a){a.open?C.current=!1:(C.current=a.reason===J,E(),t.openChangeTimeout.clear(),t.restTimeout.clear(),t.blockMouseMove=!0,t.restTimeoutPending=!1)}return N.on("openchange",v),()=>{N.off("openchange",v)}},[r,N,t,E]),j.useEffect(()=>{if(!r)return;function v(d,W=!0){const R=me(h.current,"close",t.pointerType);R?t.openChangeTimeout.start(R,()=>{i.setOpen(!1,ee(J,d)),F?.events.emit("floating.closed",d)}):W&&(t.openChangeTimeout.clear(),i.setOpen(!1,ee(J,d)),F?.events.emit("floating.closed",d))}const a=H.current??(u?i.select("domReferenceElement"):null);if(!Q(a))return;function O(d){if(t.openChangeTimeout.clear(),t.blockMouseMove=!1,o&&!fe(t.pointerType))return;const W=be(g.current),R=me(h.current,"open",t.pointerType),P=ge(d),l=d.currentTarget??null,w=i.select("domReferenceElement");let y=l;if(Q(P)&&!i.context.triggerElements.hasElement(P)){for(const ve of i.context.triggerElements.elements())if(_(ve,P)){y=ve;break}}Q(l)&&Q(w)&&!i.context.triggerElements.hasElement(l)&&_(l,w)&&(y=w);const L=y==null?!1:G(w,y,P),V=i.select("open"),z=q.current?.()??i.select("transitionStatus")==="ending",he=!V&&z&&C.current,Ie=!L&&Q(y)&&Q(w)&&_(w,y)&&he,ye=W>0&&!R,ke=L&&(V||he)||Ie,Ee=!V||L;if(ke){B()&&i.setOpen(!0,ee(J,d,y));return}ye||(R?t.openChangeTimeout.start(R,()=>{Ee&&B()&&i.setOpen(!0,ee(J,d,y))}):Ee&&B()&&i.setOpen(!0,ee(J,d,y)))}function T(d){if(x()){n();return}E();const W=i.select("domReferenceElement"),R=ue(W);t.restTimeout.clear(),t.restTimeoutPending=!1;const P=D.current.floatingContext??M?.();if(Ce(d.relatedTarget,i.context.triggerElements))return;if(k.current&&P){i.select("open")||t.openChangeTimeout.clear();const w=H.current;t.handler=k.current({...P,tree:F,x:d.clientX,y:d.clientY,onClose(){n(),E(),b.current&&!x()&&w===i.select("domReferenceElement")&&v(d,!0)}}),R.addEventListener("mousemove",t.handler),t.handler(d);return}(t.pointerType!=="touch"||!_(i.select("floatingElement"),d.relatedTarget))&&v(d)}function Z(d){_(a,d.relatedTarget)||(t.openChangeTimeout.clear(),t.restTimeout.clear(),t.restTimeoutPending=!1)}const A=$?K(a,"mouseout",Z):void 0;return S?ae(K(a,"mousemove",O,{once:!0}),K(a,"mouseenter",O),K(a,"mouseleave",T),A):ae(K(a,"mouseenter",O),K(a,"mouseleave",T),A)},[E,n,D,h,i,r,k,t,u,G,x,o,S,g,H,F,b,M,q,B,$]),j.useMemo(()=>{if(!r)return;function v(a){t.pointerType=a.pointerType}return{onPointerDown:v,onPointerEnter:v,onMouseMove(a){const{nativeEvent:O}=a,T=a.currentTarget,Z=i.select("domReferenceElement"),A=i.select("open"),d=G(Z,T,a.target);if(o&&!fe(t.pointerType))return;if(A&&d&&t.handleCloseOptions?.blockPointerEvents){const P=i.select("floatingElement");if(P){const l=t.handleCloseOptions?.getScope?.()??T.ownerDocument.body;Se(t,{scopeElement:l,referenceElement:T,floatingElement:P})}}const W=be(g.current);if(A&&!d||W===0||!d&&t.restTimeoutPending&&a.movementX**2+a.movementY**2<2)return;t.restTimeout.clear();function R(){if(t.restTimeoutPending=!1,x())return;const P=i.select("open");!t.blockMouseMove&&(!P||d)&&B()&&i.setOpen(!0,ee(J,O,T))}t.pointerType==="touch"?Ye.flushSync(()=>{R()}):d&&A?R():(t.restTimeoutPending=!0,t.restTimeout.start(W,R))}}},[r,t,x,G,o,i,g,B])}const Oe=.1,We=Oe*Oe,m=.5;function oe(e,s,r,p,c,o){return p>=s!=o>=s&&e<=(c-r)*(s-p)/(o-p)+r}function re(e,s,r,p,c,o,X,S,H,Y){let u=!1;return oe(e,s,r,p,c,o)&&(u=!u),oe(e,s,c,o,X,S)&&(u=!u),oe(e,s,X,S,H,Y)&&(u=!u),oe(e,s,H,Y,r,p)&&(u=!u),u}function Ve(e,s,r){return e>=r.x&&e<=r.x+r.width&&s>=r.y&&s<=r.y+r.height}function se(e,s,r,p,c,o){const X=Math.min(r,c),S=Math.max(r,c),H=Math.min(p,o),Y=Math.max(p,o);return e>=X&&e<=S&&s>=H&&s<=Y}function Ze(e={}){const{blockPointerEvents:s=!1}=e,r=new le,p=({x:c,y:o,placement:X,elements:S,onClose:H,nodeId:Y,tree:u})=>{const M=X?.split("-")[0];let f=!1,U=null,$=null,i=typeof performance<"u"?performance.now():0;function D(F,t){const C=performance.now(),k=C-i;if(U===null||$===null||k===0)return U=F,$=t,i=C,!1;const h=F-U,g=t-$,b=h*h+g*g,I=k*k*We;return U=F,$=t,i=C,b<I}function N(){r.clear(),H()}return function(t){r.clear();const C=S.domReference,k=S.floating;if(!C||!k||M==null||c==null||o==null)return;const{clientX:h,clientY:g}=t,b=ge(t),I=t.type==="mouseleave",q=_(k,b),x=_(C,b);if(q&&(f=!0,!I))return;if(x&&(f=!1,!I)){f=!0;return}if(I&&Q(t.relatedTarget)&&_(k,t.relatedTarget))return;function B(){return!!(u&&de(u.nodesRef.current,Y).length>0)}function G(){B()||N()}if(B())return;const E=C.getBoundingClientRect(),n=k.getBoundingClientRect(),v=c>n.right-n.width/2,a=o>n.bottom-n.height/2,O=n.width>E.width,T=n.height>E.height,Z=(O?E:n).left,A=(O?E:n).right,d=(T?E:n).top,W=(T?E:n).bottom;if(M==="top"&&o>=E.bottom-1||M==="bottom"&&o<=E.top+1||M==="left"&&c>=E.right-1||M==="right"&&c<=E.left+1){G();return}let R=!1;switch(M){case"top":R=se(h,g,Z,E.top+1,A,n.bottom-1);break;case"bottom":R=se(h,g,Z,n.top+1,A,E.bottom-1);break;case"left":R=se(h,g,n.right-1,W,E.left+1,d);break;case"right":R=se(h,g,E.right-1,W,n.left+1,d);break}if(R)return;if(f&&!Ve(h,g,E)){G();return}if(!I&&D(h,g)){G();return}let P=!1;switch(M){case"top":{const l=O?m/2:m*4,w=O||v?c+l:c-l,y=O?c-l:v?c+l:c-l,L=o+m+1,V=v||O?n.bottom-m:n.top,z=v?O?n.bottom-m:n.top:n.bottom-m;P=re(h,g,w,L,y,L,n.left,V,n.right,z);break}case"bottom":{const l=O?m/2:m*4,w=O||v?c+l:c-l,y=O?c-l:v?c+l:c-l,L=o-m,V=v||O?n.top+m:n.bottom,z=v?O?n.top+m:n.bottom:n.top+m;P=re(h,g,w,L,y,L,n.left,V,n.right,z);break}case"left":{const l=T?m/2:m*4,w=T||a?o+l:o-l,y=T?o-l:a?o+l:o-l,L=c+m+1,V=a||T?n.right-m:n.left,z=a?T?n.right-m:n.left:n.right-m;P=re(h,g,V,n.top,z,n.bottom,L,w,L,y);break}case"right":{const l=T?m/2:m*4,w=T||a?o+l:o-l,y=T?o-l:a?o+l:o-l,L=c-m,V=a||T?n.left+m:n.right,z=a?T?n.left+m:n.right:n.left+m;P=re(h,g,L,w,L,y,V,n.top,z,n.bottom);break}}P?f||r.start(40,G):G()}};return p.__options={...e,blockPointerEvents:s},p}export{Qe as a,Ge as b,Me as c,me as g,Ze as s,qe as u};
@@ -1 +1 @@
1
- import{A as c}from"./__vite-browser-external-DUJeOWgd.js";const e={name:"search",size:24,node:[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]};e.node;const o=c(e);export{o as S};
1
+ import{o as c}from"./__vite-browser-external-2g_4s3ot.js";const e={name:"search",size:24,node:[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]};e.node;const a=c(e);export{a as S};
@@ -1 +1 @@
1
- import{A as r}from"./__vite-browser-external-DUJeOWgd.js";const e={name:"server",size:24,node:[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]};e.node;const i=r(e);export{i as S};
1
+ import{o as r}from"./__vite-browser-external-2g_4s3ot.js";const e={name:"server",size:24,node:[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]};e.node;const i=r(e);export{i as S};
@@ -1 +1 @@
1
- import{A as a}from"./__vite-browser-external-DUJeOWgd.js";const e={name:"shield-check",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]};e.node;const o=a(e);export{o as S};
1
+ import{o as a}from"./__vite-browser-external-2g_4s3ot.js";const e={name:"shield-check",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]};e.node;const o=a(e);export{o as S};
@@ -1 +1 @@
1
- import{ae as R,D as E,af as I,ag as C,ah as L,ai as $}from"./__vite-browser-external-DUJeOWgd.js";function a(e){return typeof e=="string"?e.trim():""}function g(e){return Array.isArray(e)?[...new Set(e.map(a).filter(Boolean))]:[]}function v(e){const t=a(e).replace(/\\/g,"/");if(!t||t.startsWith("/")||/^[A-Za-z]:\//.test(t))return"";const n=t.replace(/\/+$/g,"").split("/").filter(Boolean);return!n.length||n.some(r=>r==="."||r==="..")?"":n.join("/")}function N(e){const t=a(e).replace(/\\/g,"/");return!t||t.startsWith("/")||t.includes(":/")||/[A-Za-z]:\//.test(t)?"":t}function S(e){return a(e?.key)||a(e?.id)||`local:${a(e?.directory)}`}function P(e){return(Array.isArray(e)?e:[]).filter(t=>t?.scope!=="system").map(t=>{const n=v(t?.directory),r=N(S(t));if(!r||!n)return null;const i=t?.scope==="plugin"?"plugin":t?.managed?"managed":"local",o=v(t?.sourceName);return{key:r,name:a(t?.name)||n.split("/").pop()||"Skill",directory:n,targets:g(t?.targets),managed:t?.managed===!0,readOnly:t?.readOnly===!0,scope:i,...o?{sourceName:o}:{}}}).filter(t=>!!t)}function J(e){return{id:a(e?.id),name:a(e?.device_name)||a(e?.id),platform:a(e?.platform)||null,scannedAt:a(e?.scanned_at)||null}}function m(e,t){const n=Array.isArray(e.deviceSources)?e.deviceSources:[];return n.some(r=>r.id===t.id)?e:{...e,deviceSources:[...n,t]}}function H(e,t,n){const r=(Array.isArray(e)?e:[]).filter(o=>o?.scope!=="system").map(o=>({...o})),i=new Map;r.forEach((o,s)=>i.set(S(o).toLowerCase(),s));for(const o of Array.isArray(t?.devices)?t.devices:[]){const s=J(o);if(!(!s.id||s.id===n))for(const c of Array.isArray(o?.skills)?o.skills:[]){if(c?.scope==="system")continue;const u=S(c),p=a(c?.directory);if(!u||!p)continue;const h=u.toLowerCase(),k=g(c.targets),y=i.get(h);if(y!=null){const f=r[y];if(f.remote===!0&&f.inventoryOnly===!0){const A=[...new Set([...g(f.targets),...k])],b=Object.fromEntries(A.map(j=>[j,"synced"]));r[y]=m({...f,targets:A,targetStates:b},s)}else r[y]=m(f,s);continue}const w=k,U=Object.fromEntries(w.map(f=>[f,"synced"])),_=m({id:`remote:${encodeURIComponent(u)}`,key:u,name:a(c.name)||p.split(/[\\/]/).pop()||"Skill",directory:p,description:"",targets:w,targetStates:U,managed:!1,readOnly:!0,inventoryOnly:!0,remote:!0,scope:a(c.scope)||"local",sourceName:a(c.sourceName)||null},s);i.set(h,r.length),r.push(_)}}return r.sort((o,s)=>String(o.name||o.directory).localeCompare(String(s.name||s.directory))||String(o.id||o.key).localeCompare(String(s.id||s.key)))}const T="tokentracker-skills",K="tokentracker-account-skills",q=15e3;async function d(e){const t=new URL(`/functions/${T}`,window.location.origin);if(e)for(const[i,o]of Object.entries(e))o!=null&&o!==""&&t.searchParams.set(i,String(o));const n=await fetch(t.toString(),{headers:{Accept:"application/json"},cache:"no-store"}),r=await n.json().catch(()=>null);if(!n.ok)throw new Error(r?.error||`Request failed with HTTP ${n.status}`);return r}async function l(e){const t=await $(),n=await fetch(`/functions/${T}`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json",...t},cache:"no-store",body:JSON.stringify(e)}),r=await n.json().catch(()=>null);if(!n.ok||r?.ok===!1)throw new Error(r?.error||`Request failed with HTTP ${n.status}`);return r}function z(){return d({mode:"installed"})}function B(e={}){return d({mode:"discover",...e.force?{force:1}:{}})}function D(e,t=0,n=20){return d({mode:"search",q:e,offset:t,limit:n})}function M(){return d({mode:"repos"})}function F(e,t){return l({action:"install",skill:e,targets:t})}function G(e){return l({action:"update_all",ids:e})}function W(e){return l({action:"uninstall",id:e})}function Z(e){return l({action:"restore",id:e})}function Q(e,t){return l({action:"set_targets",id:e,targets:t})}function V(e,t){return l({action:"import_local",directory:e,targets:t})}function X(e,t){return l({action:"delete_local",directory:e,targets:t||[]})}function Y(e){return l({action:"add_repo",repo:e})}function ee(e,t){return l({action:"remove_repo",owner:e,name:t})}function te(e={}){return d({mode:"popular",...e.force?{force:1}:{}})}function ne(e={}){return d({mode:"updates",...e.force?{force:1}:{}})}function re(e={}){return d({mode:"skill_usage",...e.force?{force:1}:{}})}async function O({accessToken:e,method:t="GET",body:n}){if(!e||!R(e))throw new Error("Skills sync requires sign-in");const r=E();if(!r)throw new Error("InsForge base URL not configured");const i={Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${e}`},o=I();o&&(i.apikey=o);const s=new AbortController,c=setTimeout(()=>s.abort(),q);try{const u=await C(L(r,K),{method:t,headers:i,cache:"no-store",signal:s.signal,...n==null?{}:{body:JSON.stringify(n)}}),p=await u.json().catch(()=>null);if(!u.ok)throw new Error(p?.error||`Request failed with HTTP ${u.status}`);return p}finally{clearTimeout(c)}}function oe(e){return O({accessToken:e})}function ae({accessToken:e,deviceId:t,skills:n}){return O({accessToken:e,method:"POST",body:{device_id:t,skills:P(n)}})}export{oe as a,M as b,te as c,B as d,ne as e,re as f,z as g,X as h,F as i,Q as j,V as k,G as l,H as m,ee as n,Y as o,ae as p,Z as r,D as s,W as u};
1
+ import{ah as R,x as E,ai as I,aj as C,ak as L,al as $}from"./__vite-browser-external-2g_4s3ot.js";function a(e){return typeof e=="string"?e.trim():""}function g(e){return Array.isArray(e)?[...new Set(e.map(a).filter(Boolean))]:[]}function v(e){const t=a(e).replace(/\\/g,"/");if(!t||t.startsWith("/")||/^[A-Za-z]:\//.test(t))return"";const n=t.replace(/\/+$/g,"").split("/").filter(Boolean);return!n.length||n.some(r=>r==="."||r==="..")?"":n.join("/")}function N(e){const t=a(e).replace(/\\/g,"/");return!t||t.startsWith("/")||t.includes(":/")||/[A-Za-z]:\//.test(t)?"":t}function S(e){return a(e?.key)||a(e?.id)||`local:${a(e?.directory)}`}function P(e){return(Array.isArray(e)?e:[]).filter(t=>t?.scope!=="system").map(t=>{const n=v(t?.directory),r=N(S(t));if(!r||!n)return null;const i=t?.scope==="plugin"?"plugin":t?.managed?"managed":"local",o=v(t?.sourceName);return{key:r,name:a(t?.name)||n.split("/").pop()||"Skill",directory:n,targets:g(t?.targets),managed:t?.managed===!0,readOnly:t?.readOnly===!0,scope:i,...o?{sourceName:o}:{}}}).filter(t=>!!t)}function x(e){return{id:a(e?.id),name:a(e?.device_name)||a(e?.id),platform:a(e?.platform)||null,scannedAt:a(e?.scanned_at)||null}}function m(e,t){const n=Array.isArray(e.deviceSources)?e.deviceSources:[];return n.some(r=>r.id===t.id)?e:{...e,deviceSources:[...n,t]}}function H(e,t,n){const r=(Array.isArray(e)?e:[]).filter(o=>o?.scope!=="system").map(o=>({...o})),i=new Map;r.forEach((o,s)=>i.set(S(o).toLowerCase(),s));for(const o of Array.isArray(t?.devices)?t.devices:[]){const s=x(o);if(!(!s.id||s.id===n))for(const c of Array.isArray(o?.skills)?o.skills:[]){if(c?.scope==="system")continue;const u=S(c),p=a(c?.directory);if(!u||!p)continue;const h=u.toLowerCase(),k=g(c.targets),y=i.get(h);if(y!=null){const f=r[y];if(f.remote===!0&&f.inventoryOnly===!0){const A=[...new Set([...g(f.targets),...k])],_=Object.fromEntries(A.map(b=>[b,"synced"]));r[y]=m({...f,targets:A,targetStates:_},s)}else r[y]=m(f,s);continue}const w=k,j=Object.fromEntries(w.map(f=>[f,"synced"])),U=m({id:`remote:${encodeURIComponent(u)}`,key:u,name:a(c.name)||p.split(/[\\/]/).pop()||"Skill",directory:p,description:"",targets:w,targetStates:j,managed:!1,readOnly:!0,inventoryOnly:!0,remote:!0,scope:a(c.scope)||"local",sourceName:a(c.sourceName)||null},s);i.set(h,r.length),r.push(U)}}return r.sort((o,s)=>String(o.name||o.directory).localeCompare(String(s.name||s.directory))||String(o.id||o.key).localeCompare(String(s.id||s.key)))}const T="tokentracker-skills",J="tokentracker-account-skills",K=15e3;async function d(e){const t=new URL(`/functions/${T}`,window.location.origin);if(e)for(const[i,o]of Object.entries(e))o!=null&&o!==""&&t.searchParams.set(i,String(o));const n=await fetch(t.toString(),{headers:{Accept:"application/json"},cache:"no-store"}),r=await n.json().catch(()=>null);if(!n.ok)throw new Error(r?.error||`Request failed with HTTP ${n.status}`);return r}async function l(e){const t=await $(),n=await fetch(`/functions/${T}`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json",...t},cache:"no-store",body:JSON.stringify(e)}),r=await n.json().catch(()=>null);if(!n.ok||r?.ok===!1)throw new Error(r?.error||`Request failed with HTTP ${n.status}`);return r}function z(){return d({mode:"installed"})}function B(e={}){return d({mode:"discover",...e.force?{force:1}:{}})}function M(e,t=0,n=20){return d({mode:"search",q:e,offset:t,limit:n})}function D(){return d({mode:"repos"})}function F(e,t){return l({action:"install",skill:e,targets:t})}function G(e){return l({action:"update_all",ids:e})}function W(e){return l({action:"uninstall",id:e})}function Z(e){return l({action:"restore",id:e})}function Q(e,t){return l({action:"set_targets",id:e,targets:t})}function V(e,t){return l({action:"import_local",directory:e,targets:t})}function X(e,t){return l({action:"delete_local",directory:e,targets:t||[]})}function Y(e){return l({action:"add_repo",repo:e})}function ee(e,t){return l({action:"remove_repo",owner:e,name:t})}function te(e={}){return d({mode:"popular",...e.force?{force:1}:{}})}function ne(e={}){return d({mode:"updates",...e.force?{force:1}:{}})}function re(e={}){return d({mode:"skill_usage",...e.force?{force:1}:{}})}async function O({accessToken:e,method:t="GET",body:n}){if(!e||!R(e))throw new Error("Skills sync requires sign-in");const r=E();if(!r)throw new Error("InsForge base URL not configured");const i={Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${e}`},o=I();o&&(i.apikey=o);const s=new AbortController,c=setTimeout(()=>s.abort(),K);try{const u=await C(L(r,J),{method:t,headers:i,cache:"no-store",signal:s.signal,...n==null?{}:{body:JSON.stringify(n)}}),p=await u.json().catch(()=>null);if(!u.ok)throw new Error(p?.error||`Request failed with HTTP ${u.status}`);return p}finally{clearTimeout(c)}}function oe(e){return O({accessToken:e})}function ae({accessToken:e,deviceId:t,skills:n}){return O({accessToken:e,method:"POST",body:{device_id:t,skills:P(n)}})}export{oe as a,D as b,te as c,B as d,ne as e,re as f,z as g,X as h,F as i,Q as j,V as k,G as l,H as m,ee as n,Y as o,ae as p,Z as r,M as s,W as u};
@@ -1,4 +1,4 @@
1
- import{r as c,a6 as P,an as Oe}from"./__vite-browser-external-DUJeOWgd.js";function Sn(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return c.useMemo(()=>r=>{t.forEach(o=>o(r))},t)}const tt=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function me(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function bt(e){return"nodeType"in e}function B(e){var t,n;return e?me(e)?e:bt(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function wt(e){const{Document:t}=B(e);return e instanceof t}function Be(e){return me(e)?!1:e instanceof B(e).HTMLElement}function Wt(e){return e instanceof B(e).SVGElement}function ye(e){return e?me(e)?e.document:bt(e)?wt(e)?e:Be(e)||Wt(e)?e.ownerDocument:document:document:document}const Q=tt?c.useLayoutEffect:c.useEffect;function mt(e){const t=c.useRef(e);return Q(()=>{t.current=e}),c.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return t.current==null?void 0:t.current(...r)},[])}function En(){const e=c.useRef(null),t=c.useCallback((r,o)=>{e.current=setInterval(r,o)},[]),n=c.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function ke(e,t){t===void 0&&(t=[e]);const n=c.useRef(e);return Q(()=>{n.current!==e&&(n.current=e)},t),n}function Fe(e,t){const n=c.useRef();return c.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function Je(e){const t=mt(e),n=c.useRef(null),r=c.useCallback(o=>{o!==n.current&&t?.(o,n.current),n.current=o},[]);return[n,r]}function ft(e){const t=c.useRef();return c.useEffect(()=>{t.current=e},[e]),t.current}let ct={};function $e(e,t){return c.useMemo(()=>{if(t)return t;const n=ct[e]==null?0:ct[e]+1;return ct[e]=n,e+"-"+n},[e,t])}function Ht(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r.reduce((i,s)=>{const a=Object.entries(s);for(const[l,u]of a){const f=i[l];f!=null&&(i[l]=f+e*u)}return i},{...t})}}const we=Ht(1),ze=Ht(-1);function In(e){return"clientX"in e&&"clientY"in e}function yt(e){if(!e)return!1;const{KeyboardEvent:t}=B(e.target);return t&&e instanceof t}function Mn(e){if(!e)return!1;const{TouchEvent:t}=B(e.target);return t&&e instanceof t}function ht(e){if(Mn(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return In(e)?{x:e.clientX,y:e.clientY}:null}const _e=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[_e.Translate.toString(e),_e.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),Tt="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function An(e){return e.matches(Tt)?e:e.querySelector(Tt)}const On={display:"none"};function Tn(e){let{id:t,value:n}=e;return P.createElement("div",{id:t,style:On},n)}function Nn(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const o={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return P.createElement("div",{id:t,style:o,role:"status","aria-live":r,"aria-atomic":!0},n)}function Ln(){const[e,t]=c.useState("");return{announce:c.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const Kt=c.createContext(null);function kn(e){const t=c.useContext(Kt);c.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function zn(){const[e]=c.useState(()=>new Set),t=c.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[c.useCallback(r=>{let{type:o,event:i}=r;e.forEach(s=>{var a;return(a=s[o])==null?void 0:a.call(s,i)})},[e]),t]}const Pn={draggable:`
1
+ import{r as c,V as P,ax as Oe}from"./__vite-browser-external-2g_4s3ot.js";function Sn(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return c.useMemo(()=>r=>{t.forEach(o=>o(r))},t)}const tt=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function me(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function bt(e){return"nodeType"in e}function B(e){var t,n;return e?me(e)?e:bt(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function wt(e){const{Document:t}=B(e);return e instanceof t}function Be(e){return me(e)?!1:e instanceof B(e).HTMLElement}function Wt(e){return e instanceof B(e).SVGElement}function ye(e){return e?me(e)?e.document:bt(e)?wt(e)?e:Be(e)||Wt(e)?e.ownerDocument:document:document:document}const Q=tt?c.useLayoutEffect:c.useEffect;function mt(e){const t=c.useRef(e);return Q(()=>{t.current=e}),c.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return t.current==null?void 0:t.current(...r)},[])}function En(){const e=c.useRef(null),t=c.useCallback((r,o)=>{e.current=setInterval(r,o)},[]),n=c.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function ke(e,t){t===void 0&&(t=[e]);const n=c.useRef(e);return Q(()=>{n.current!==e&&(n.current=e)},t),n}function Fe(e,t){const n=c.useRef();return c.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function Je(e){const t=mt(e),n=c.useRef(null),r=c.useCallback(o=>{o!==n.current&&t?.(o,n.current),n.current=o},[]);return[n,r]}function ft(e){const t=c.useRef();return c.useEffect(()=>{t.current=e},[e]),t.current}let ct={};function $e(e,t){return c.useMemo(()=>{if(t)return t;const n=ct[e]==null?0:ct[e]+1;return ct[e]=n,e+"-"+n},[e,t])}function Ht(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return r.reduce((i,s)=>{const a=Object.entries(s);for(const[l,u]of a){const f=i[l];f!=null&&(i[l]=f+e*u)}return i},{...t})}}const we=Ht(1),ze=Ht(-1);function In(e){return"clientX"in e&&"clientY"in e}function yt(e){if(!e)return!1;const{KeyboardEvent:t}=B(e.target);return t&&e instanceof t}function Mn(e){if(!e)return!1;const{TouchEvent:t}=B(e.target);return t&&e instanceof t}function ht(e){if(Mn(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return In(e)?{x:e.clientX,y:e.clientY}:null}const _e=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[_e.Translate.toString(e),_e.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),Tt="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function An(e){return e.matches(Tt)?e:e.querySelector(Tt)}const On={display:"none"};function Tn(e){let{id:t,value:n}=e;return P.createElement("div",{id:t,style:On},n)}function Nn(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const o={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return P.createElement("div",{id:t,style:o,role:"status","aria-live":r,"aria-atomic":!0},n)}function Ln(){const[e,t]=c.useState("");return{announce:c.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const Kt=c.createContext(null);function kn(e){const t=c.useContext(Kt);c.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of <DndContext>");return t(e)},[e,t])}function zn(){const[e]=c.useState(()=>new Set),t=c.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[c.useCallback(r=>{let{type:o,event:i}=r;e.forEach(s=>{var a;return(a=s[o])==null?void 0:a.call(s,i)})},[e]),t]}const Pn={draggable:`
2
2
  To pick up a draggable item, press the space bar.
3
3
  While dragging, use the arrow keys to move the item.
4
4
  Press space again to drop the item in its new position, or press escape to cancel.
@@ -0,0 +1 @@
1
+ import{K as r}from"./__vite-browser-external-2g_4s3ot.js";import{F as g}from"./composite-INW-ELWX.js";function a(e,n,u=!1){return{open:!1,openProp:void 0,mounted:!1,transitionStatus:void 0,floatingRootContext:new g({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:e,floatingId:n,syncOnly:!0,nested:u,onOpenChange:void 0}),floatingId:n,triggerCount:0,preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,triggerIdProp:void 0,popupElement:null,positionerElement:null,activeTriggerProps:r,inactiveTriggerProps:r,popupProps:r}}const o=e=>e.triggerIdProp??e.activeTriggerId,t=e=>e.openProp??e.open,i=e=>(e.popupElement?.id??e.floatingId)||void 0;function p(e,n){return n!==void 0&&t(e)&&o(e)===n}function l(e,n){return p(e,n)?!0:n!==void 0&&t(e)&&o(e)==null&&e.triggerCount===1}const c={open:t,mounted:e=>e.mounted,transitionStatus:e=>e.transitionStatus,floatingRootContext:e=>e.floatingRootContext,triggerCount:e=>e.triggerCount,preventUnmountingOnClose:e=>e.preventUnmountingOnClose,payload:e=>e.payload,activeTriggerId:o,activeTriggerElement:e=>e.mounted?e.activeTriggerElement:null,popupId:i,isTriggerActive:(e,n)=>n!==void 0&&o(e)===n,isOpenedByTrigger:(e,n)=>p(e,n),isMountedByTrigger:(e,n)=>n!==void 0&&o(e)===n&&e.mounted,triggerProps:(e,n)=>n?e.activeTriggerProps:e.inactiveTriggerProps,triggerPopupId:(e,n)=>l(e,n)?i(e):void 0,popupProps:e=>e.popupProps,popupElement:e=>e.popupElement,positionerElement:e=>e.positionerElement};export{a as c,c as p};
@@ -1 +1 @@
1
- import{A as a}from"./__vite-browser-external-DUJeOWgd.js";const e={name:"maximize-2",size:24,node:[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]};e.node;const o=a(e);const t={name:"terminal",size:24,node:[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]};t.node;const i=a(t);export{o as M,i as T};
1
+ import{o as a}from"./__vite-browser-external-2g_4s3ot.js";const e={name:"maximize-2",size:24,node:[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]};e.node;const o=a(e);const t={name:"terminal",size:24,node:[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]};t.node;const i=a(t);export{o as M,i as T};
@@ -1 +1 @@
1
- import{A as e}from"./__vite-browser-external-DUJeOWgd.js";const a={name:"trash",size:24,node:[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],aliases:["trash-2"]};a.node;const o=e(a);export{o as T};
1
+ import{o as e}from"./__vite-browser-external-2g_4s3ot.js";const a={name:"trash",size:24,node:[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],aliases:["trash-2"]};a.node;const o=e(a);export{o as T};
@@ -1 +1 @@
1
- import{r as p,g as N,b as M}from"./__vite-browser-external-DUJeOWgd.js";const D=6e3,S=2500,E=100;function h(t,r){let o;const n=new Promise((a,i)=>{o=setTimeout(()=>i(new Error("landing stats timeout")),r)});return Promise.race([t,n]).finally(()=>{o!=null&&clearTimeout(o)})}const A=5*6e4,P=1440*6e4,k="tokentracker:community-stats:v2";let s=null;function C(t){const r=Number(t?.tokenFloor)||0,o=Number(t?.totalEntries)||0;return!(r>0)||!(o>0)?null:{tokenFloor:r,totalEntries:o,top:Array.isArray(t?.top)?t.top:[],topModels:Array.isArray(t?.topModels)?t.topModels:[],providers:Array.isArray(t?.providers)?t.providers:[],dailyGrowth:Array.isArray(t?.dailyGrowth)?t.dailyGrowth:[],tokenMix:Array.isArray(t?.tokenMix)?t.tokenMix:[],userDistribution:Array.isArray(t?.userDistribution)?t.userDistribution:[],platforms:Array.isArray(t?.platforms)?t.platforms:[],activeDevelopersTotal:Number(t?.activeDevelopersTotal)||0,activeDevelopers30d:Number(t?.activeDevelopers30d)||0,tokens30d:Number(t?.tokens30d)||0,tokenGrowthPct:t?.tokenGrowthPct!=null&&Number.isFinite(Number(t.tokenGrowthPct))?Number(t.tokenGrowthPct):null,developerGrowthPct:t?.developerGrowthPct!=null&&Number.isFinite(Number(t.developerGrowthPct))?Number(t.developerGrowthPct):null,generatedAt:typeof t?.generatedAt=="string"?t.generatedAt:null}}function G(){if(typeof window>"u"||!window.localStorage)return null;try{const t=JSON.parse(window.localStorage.getItem(k)||"null"),r=Number(t?.cachedAt)||0,o=C(t?.data),n=Date.now()-r;return!o||n<0||n>P?null:{data:o,isFresh:n<A}}catch{return null}}function I(t){if(!(typeof window>"u"||!window.localStorage))try{window.localStorage.setItem(k,JSON.stringify({cachedAt:Date.now(),data:t}))}catch{}}function F(){if(s&&Date.now()-s.at<A)return s.promise;const t=Promise.all([h(N({period:"total",limit:E,offset:0}),D),h(M(),S).catch(()=>null)]);return s={at:Date.now(),promise:t},t.catch(()=>{s?.promise===t&&(s=null)}),t}function O({enabled:t=!0}={}){const[r]=p.useState(()=>G()),[o,n]=p.useState(()=>r?{status:"ready",...r.data}:{status:"loading",tokenFloor:null,totalEntries:null,top:[]});return p.useEffect(()=>{if(!t||r?.isFresh)return;let a=!1,i=null,u=null;const y=async()=>{try{const[l,e]=await F();if(a)return;const c=Array.isArray(l?.entries)?l.entries:[],b=c.reduce((m,T)=>m+(Number(T?.total_tokens)||0),0),d=Number(e?.total_tokens)||0;d>0||(s=null);const w=Number(r?.data?.tokenFloor)||0,f=d>0?d:w>0?w:b;if(!c.length||!(f>0)){n(m=>({...m,status:"error"}));return}const g=Array.isArray(e?.top_models)?e.top_models:r?.data?.topModels||[],_={tokenFloor:f,totalEntries:Number(l?.total_entries)||c.length,top:c.slice(0,3),topModels:g,providers:Array.isArray(e?.providers)?e.providers:[],dailyGrowth:Array.isArray(e?.daily_growth)?e.daily_growth:[],tokenMix:Array.isArray(e?.token_mix)?e.token_mix:[],userDistribution:Array.isArray(e?.user_distribution)?e.user_distribution:[],platforms:Array.isArray(e?.platforms)?e.platforms:[],activeDevelopersTotal:Number(e?.active_developers_total)||0,activeDevelopers30d:Number(e?.active_developers_30d)||0,tokens30d:Number(e?.tokens_30d)||0,tokenGrowthPct:e?.token_growth_pct==null?null:Number(e.token_growth_pct),developerGrowthPct:e?.developer_growth_pct==null?null:Number(e.developer_growth_pct),generatedAt:typeof e?.generated_at=="string"?e.generated_at:null};n({status:"ready",..._}),d>0&&I(_)}catch{a||n(e=>e.status==="ready"?e:{...e,status:"error"})}};return typeof window<"u"&&"requestIdleCallback"in window?i=window.requestIdleCallback(y,{timeout:1500}):u=setTimeout(y,400),()=>{a=!0,i!=null&&typeof window.cancelIdleCallback=="function"&&window.cancelIdleCallback(i),u!=null&&clearTimeout(u)}},[t,r]),o}export{O as u};
1
+ import{r as p,g as N,b as M}from"./__vite-browser-external-2g_4s3ot.js";const D=6e3,S=2500,E=100;function h(t,r){let o;const n=new Promise((a,i)=>{o=setTimeout(()=>i(new Error("landing stats timeout")),r)});return Promise.race([t,n]).finally(()=>{o!=null&&clearTimeout(o)})}const A=5*6e4,P=1440*6e4,k="tokentracker:community-stats:v2";let s=null;function C(t){const r=Number(t?.tokenFloor)||0,o=Number(t?.totalEntries)||0;return!(r>0)||!(o>0)?null:{tokenFloor:r,totalEntries:o,top:Array.isArray(t?.top)?t.top:[],topModels:Array.isArray(t?.topModels)?t.topModels:[],providers:Array.isArray(t?.providers)?t.providers:[],dailyGrowth:Array.isArray(t?.dailyGrowth)?t.dailyGrowth:[],tokenMix:Array.isArray(t?.tokenMix)?t.tokenMix:[],userDistribution:Array.isArray(t?.userDistribution)?t.userDistribution:[],platforms:Array.isArray(t?.platforms)?t.platforms:[],activeDevelopersTotal:Number(t?.activeDevelopersTotal)||0,activeDevelopers30d:Number(t?.activeDevelopers30d)||0,tokens30d:Number(t?.tokens30d)||0,tokenGrowthPct:t?.tokenGrowthPct!=null&&Number.isFinite(Number(t.tokenGrowthPct))?Number(t.tokenGrowthPct):null,developerGrowthPct:t?.developerGrowthPct!=null&&Number.isFinite(Number(t.developerGrowthPct))?Number(t.developerGrowthPct):null,generatedAt:typeof t?.generatedAt=="string"?t.generatedAt:null}}function G(){if(typeof window>"u"||!window.localStorage)return null;try{const t=JSON.parse(window.localStorage.getItem(k)||"null"),r=Number(t?.cachedAt)||0,o=C(t?.data),n=Date.now()-r;return!o||n<0||n>P?null:{data:o,isFresh:n<A}}catch{return null}}function I(t){if(!(typeof window>"u"||!window.localStorage))try{window.localStorage.setItem(k,JSON.stringify({cachedAt:Date.now(),data:t}))}catch{}}function F(){if(s&&Date.now()-s.at<A)return s.promise;const t=Promise.all([h(N({period:"total",limit:E,offset:0}),D),h(M(),S).catch(()=>null)]);return s={at:Date.now(),promise:t},t.catch(()=>{s?.promise===t&&(s=null)}),t}function O({enabled:t=!0}={}){const[r]=p.useState(()=>G()),[o,n]=p.useState(()=>r?{status:"ready",...r.data}:{status:"loading",tokenFloor:null,totalEntries:null,top:[]});return p.useEffect(()=>{if(!t||r?.isFresh)return;let a=!1,i=null,u=null;const y=async()=>{try{const[l,e]=await F();if(a)return;const c=Array.isArray(l?.entries)?l.entries:[],b=c.reduce((m,T)=>m+(Number(T?.total_tokens)||0),0),d=Number(e?.total_tokens)||0;d>0||(s=null);const w=Number(r?.data?.tokenFloor)||0,f=d>0?d:w>0?w:b;if(!c.length||!(f>0)){n(m=>({...m,status:"error"}));return}const g=Array.isArray(e?.top_models)?e.top_models:r?.data?.topModels||[],_={tokenFloor:f,totalEntries:Number(l?.total_entries)||c.length,top:c.slice(0,3),topModels:g,providers:Array.isArray(e?.providers)?e.providers:[],dailyGrowth:Array.isArray(e?.daily_growth)?e.daily_growth:[],tokenMix:Array.isArray(e?.token_mix)?e.token_mix:[],userDistribution:Array.isArray(e?.user_distribution)?e.user_distribution:[],platforms:Array.isArray(e?.platforms)?e.platforms:[],activeDevelopersTotal:Number(e?.active_developers_total)||0,activeDevelopers30d:Number(e?.active_developers_30d)||0,tokens30d:Number(e?.tokens_30d)||0,tokenGrowthPct:e?.token_growth_pct==null?null:Number(e.token_growth_pct),developerGrowthPct:e?.developer_growth_pct==null?null:Number(e.developer_growth_pct),generatedAt:typeof e?.generated_at=="string"?e.generated_at:null};n({status:"ready",..._}),d>0&&I(_)}catch{a||n(e=>e.status==="ready"?e:{...e,status:"error"})}};return typeof window<"u"&&"requestIdleCallback"in window?i=window.requestIdleCallback(y,{timeout:1500}):u=setTimeout(y,400),()=>{a=!0,i!=null&&typeof window.cancelIdleCallback=="function"&&window.cancelIdleCallback(i),u!=null&&clearTimeout(u)}},[t,r]),o}export{O as u};
@@ -1 +1 @@
1
- import{r as u}from"./__vite-browser-external-DUJeOWgd.js";function f(r,e){return r.length===e.length&&r.every((t,n)=>Object.is(t,e[n]))}function a(r){const e=u.useRef(r),t=u.useRef(0),n=u.useRef(!0);return u.useLayoutEffect(()=>{f(e.current,r)||(e.current=r,t.current+=1)}),u.useEffect(()=>(n.current=!0,()=>{n.current=!1,t.current+=1}),[]),u.useCallback(()=>{const c=++t.current,s=e.current;return()=>n.current&&t.current===c&&e.current===s},[])}export{a as u};
1
+ import{r as u}from"./__vite-browser-external-2g_4s3ot.js";function f(r,e){return r.length===e.length&&r.every((t,n)=>Object.is(t,e[n]))}function a(r){const e=u.useRef(r),t=u.useRef(0),n=u.useRef(!0);return u.useLayoutEffect(()=>{f(e.current,r)||(e.current=r,t.current+=1)}),u.useEffect(()=>(n.current=!0,()=>{n.current=!1,t.current+=1}),[]),u.useCallback(()=>{const c=++t.current,s=e.current;return()=>n.current&&t.current===c&&e.current===s},[])}export{a as u};
@@ -0,0 +1 @@
1
+ import{c as a,r as c,t as C,H as F,F as H,G as Q}from"./__vite-browser-external-2g_4s3ot.js";const W=["claude","codex","cursor","gemini","kimi","kiro","grok","copilot","antigravity","zcode","opencodeGo","commandCode","qoder","qoderCn","codingPlan","agentPlan","devin"],X={claude:"CLAUDE",codex:"CODEX",cursor:"CURSOR",gemini:"GEMINI",kimi:"KIMI",kiro:"KIRO",grok:"GROK",copilot:"COPILOT",antigravity:"ANTIGRAVITY",zcode:"ZCODE",opencodeGo:"OPENCODE",commandCode:"COMMAND-CODE",qoder:"QODER",qoderCn:"QODER-CN",codingPlan:"VOLCANO-ARK",agentPlan:"VOLCANO-ARK",devin:"DEVIN"};function me(e){return X[e]||null}function Se(e){switch(e){case"claude":return a("limits.provider.claude");case"codex":return a("limits.provider.codex");case"cursor":return a("limits.provider.cursor");case"gemini":return a("limits.provider.gemini");case"kimi":return a("limits.provider.kimi");case"kiro":return a("limits.provider.kiro");case"grok":return a("limits.provider.grok");case"copilot":return a("limits.provider.copilot");case"antigravity":return a("limits.provider.antigravity");case"zcode":return a("limits.provider.zcode");case"opencodeGo":return a("limits.provider.opencode_go");case"commandCode":return a("limits.provider.command_code");case"qoder":return a("limits.provider.qoder");case"qoderCn":return a("limits.provider.qoder_cn");case"codingPlan":return a("limits.provider.ark_coding_plan");case"agentPlan":return a("limits.provider.ark_agent_plan");case"devin":return a("limits.provider.devin");default:return String(e||"")}}const f=W,h="tt.limits.providerOrder",I="tt.limits.providerVisibility",A="tt.limits.displayMode",D="tt.limits.showSubscriptions",O="tt.limits.updatedAt",M="limitsPreferences",Z="limitsDisplayMode",$="tt:limits-prefs-changed",w=Object.freeze({USED:"used",REMAINING:"remaining"}),b=new Set(Object.values(w)),_=new Set([h,I,A,D,O]);function E(){return[...f]}const ee=new Set(["devin"]);function g(){return Object.fromEntries(f.map(e=>[e,!ee.has(e)]))}function L(e){const r=[];if(Array.isArray(e))for(const o of e)f.includes(o)&&!r.includes(o)&&r.push(o);for(const o of f)r.includes(o)||r.push(o);return r}function k(e){const r=g();if(!e||typeof e!="object"||Array.isArray(e))return r;for(const o of f)typeof e[o]=="boolean"&&(r[o]=e[o]);return r}function re(e){return b.has(e)?e:w.USED}function P(e){return typeof e=="boolean"?e:!0}function S(e){if(e!=null){if(typeof e=="number")return Number.isSafeInteger(e)?e:void 0;if(typeof e=="string"){const r=e.trim();if(r==="")return;const o=Number(r);return Number.isSafeInteger(o)?o:void 0}}}function y(e={}){const r=e&&typeof e=="object"?e:{};return{displayMode:re(r.displayMode),providerOrder:L(r.providerOrder),providerVisibility:k(r.providerVisibility),showSubscriptions:P(r.showSubscriptions),updatedAt:S(r.updatedAt)}}function te(){if(typeof window>"u")return E();try{const e=window.localStorage.getItem(h);return L(e?JSON.parse(e):void 0)}catch{return E()}}function R(){if(typeof window>"u")return g();try{const e=window.localStorage.getItem(I);return k(e?JSON.parse(e):void 0)}catch{return g()}}function we(e){return e===null||_.has(e)}function ye(){return R().devin===!0}function ie(){if(typeof window>"u")return w.USED;try{const e=window.localStorage.getItem(A);return b.has(e)?e:w.USED}catch{return w.USED}}function ne(){if(typeof window>"u")return!0;try{const e=window.localStorage.getItem(D);return e===null?!0:P(JSON.parse(e))}catch{return!0}}function oe(){if(!(typeof window>"u"))try{return S(window.localStorage.getItem(O))}catch{return}}function se(){if(typeof window>"u")return!1;try{for(const e of _)if(window.localStorage.getItem(e)!==null)return!0}catch{return!1}return!1}function v(){return y({displayMode:ie(),providerOrder:te(),providerVisibility:R(),showSubscriptions:ne(),updatedAt:oe()})}function de(e){if(typeof window>"u")return;const r=y(e);try{window.localStorage.setItem(h,JSON.stringify(r.providerOrder)),window.localStorage.setItem(I,JSON.stringify(r.providerVisibility)),window.localStorage.setItem(A,r.displayMode),window.localStorage.setItem(D,JSON.stringify(r.showSubscriptions)),r.updatedAt===void 0?window.localStorage.removeItem(O):window.localStorage.setItem(O,String(r.updatedAt))}catch(o){console.warn("[tokentracker] limits preferences localStorage write failed:",o)}}function ae(e){const r=y(e);return{displayMode:r.displayMode,providerOrder:[...r.providerOrder],providerVisibility:{...r.providerVisibility},showSubscriptions:r.showSubscriptions,updatedAt:r.updatedAt??null}}function ce(...e){let r;for(const d of e){const l=S(d);l!==void 0&&(r=r===void 0?l:Math.max(r,l))}const o=Date.now();return r!==void 0&&o<=r?r+1:o}function ue(e,r){return e.length===r.length&&e.every((o,d)=>o===r[d])}function le(e,r){return f.every(o=>e[o]===r[o])}function T(e,r){return e.displayMode===r.displayMode&&ue(e.providerOrder,r.providerOrder)&&le(e.providerVisibility,r.providerVisibility)&&e.showSubscriptions===r.showSubscriptions}function pe(e,r){return T(e,r)&&S(e.updatedAt)===S(r.updatedAt)}function N(e,r){const o=S(e.updatedAt),d=S(r.updatedAt);return o!==void 0&&(d===void 0||o>d)}function ve(){const[e,r]=c.useState(v),o=c.useRef(e),d=c.useCallback((i,t={})=>{const n=y(i);return o.current=n,r(n),t.writeLocal&&de(n),typeof window<"u"&&window.dispatchEvent(new CustomEvent($)),n},[]),l=c.useCallback(i=>{C()&&F(M,ae(i))},[]),u=c.useCallback(i=>{const t=v(),n=N(t,o.current)?d(t):o.current,s=y(i(n));if(T(n,s))return;const p=ce(t.updatedAt,n.updatedAt),m=d({...s,updatedAt:p},{writeLocal:!0});l(m)},[d,l]),x=c.useCallback(i=>{b.has(i)&&u(t=>({...t,displayMode:i}))},[u]),K=c.useCallback(i=>{u(t=>({...t,showSubscriptions:!!i}))},[u]),V=c.useCallback(i=>{if(!b.has(i))return;const t=v();if(t.updatedAt!==void 0){d(t);return}d({...t,displayMode:i,updatedAt:void 0},{writeLocal:!0})},[d]);c.useEffect(()=>{if(!C())return;const i=H(t=>{const n=t?.[M];if(n&&typeof n=="object"){const s=y(n);if(!se()){d(s,{writeLocal:!0});return}const p=v();if(N(s,p))d(s,{writeLocal:!0});else{const m=d(p);pe(s,p)||l(m)}return}V(t?.[Z])});return Q(),i},[V,d,l]),c.useEffect(()=>{if(typeof window>"u")return;const i=t=>{(t.key===null||_.has(t.key))&&d(v())};return window.addEventListener("storage",i),()=>window.removeEventListener("storage",i)},[d]);const U=c.useCallback(i=>{f.includes(i)&&u(t=>({...t,providerVisibility:{...t.providerVisibility,[i]:!t.providerVisibility[i]}}))},[u]),Y=c.useCallback(i=>{u(t=>({...t,providerVisibility:Object.fromEntries(f.map(n=>[n,!!i]))}))},[u]),z=c.useCallback(i=>{u(t=>{const n=t.providerOrder.indexOf(i);if(n<=0)return t;const s=[...t.providerOrder];return[s[n-1],s[n]]=[s[n],s[n-1]],{...t,providerOrder:s}})},[u]),G=c.useCallback(i=>{u(t=>{const n=t.providerOrder.indexOf(i);if(n<0||n>=t.providerOrder.length-1)return t;const s=[...t.providerOrder];return[s[n],s[n+1]]=[s[n+1],s[n]],{...t,providerOrder:s}})},[u]),q=c.useCallback((i,t)=>{i!==t&&u(n=>{const s=n.providerOrder.indexOf(i),p=n.providerOrder.indexOf(t);if(s<0||p<0)return n;const m=[...n.providerOrder],[B]=m.splice(s,1);return m.splice(p,0,B),{...n,providerOrder:m}})},[u]),j=c.useCallback(()=>{u(()=>({displayMode:w.USED,providerOrder:E(),providerVisibility:g(),showSubscriptions:!0}))},[u]),J=c.useMemo(()=>e.providerOrder.filter(i=>e.providerVisibility[i]!==!1),[e.providerOrder,e.providerVisibility]);return{order:e.providerOrder,visibility:e.providerVisibility,displayMode:e.displayMode,showSubscriptions:e.showSubscriptions,setDisplayMode:x,setShowSubscriptions:K,visibleOrdered:J,toggle:U,setAllVisible:Y,moveUp:z,moveDown:G,moveToward:q,reset:j}}export{$ as L,we as a,w as b,W as c,me as d,ye as i,Se as l,ve as u};
@@ -1 +1 @@
1
- import{r as s,P as f,Q as g,U as b,V as r,W as S,Y as v}from"./__vite-browser-external-DUJeOWgd.js";function A(){const[u,a]=s.useState(null),t=f()&&g();s.useEffect(()=>{if(!t)return;const e=b(n=>a(n));return r(),e},[t]);const c=s.useCallback((e,n)=>{t&&(a(i=>i&&{...i,[e]:n}),S(e,n))},[t]),o=s.useCallback(e=>{t&&v(e)},[t]),l=s.useCallback(()=>{t&&r()},[t]);return{available:t,settings:u,setSetting:c,runAction:o,refresh:l}}export{A as u};
1
+ import{r as s,A as f,E as g,F as b,G as r,H as S,I as v}from"./__vite-browser-external-2g_4s3ot.js";function N(){const[u,a]=s.useState(null),t=f()&&g();s.useEffect(()=>{if(!t)return;const e=b(n=>a(n));return r(),e},[t]);const c=s.useCallback((e,n)=>{t&&(a(i=>i&&{...i,[e]:n}),S(e,n))},[t]),o=s.useCallback(e=>{t&&v(e)},[t]),l=s.useCallback(()=>{t&&r()},[t]);return{available:t,settings:u,setSetting:c,runAction:o,refresh:l}}export{N as u};
@@ -1 +1 @@
1
- import{r as f}from"./__vite-browser-external-DUJeOWgd.js";function O(t){if(typeof window>"u")return null;try{const n=window.localStorage.getItem(t);if(!n)return null;const i=JSON.parse(n);return Array.isArray(i)?i.filter(o=>typeof o=="string"):null}catch{return null}}function m(t,n){if(!(typeof window>"u"))try{window.localStorage.setItem(t,JSON.stringify(n))}catch{}}function S(t,n){if(!t)return n;const i=new Set(n),o=t.filter(u=>i.has(u)),c=n.filter(u=>!o.includes(u));return[...o,...c]}function p(t,n){const i=f.useMemo(()=>n.join("|"),[n]),[o,c]=f.useState(()=>S(O(t),n));f.useEffect(()=>{c(r=>{const e=S(r,n);return e.length===r.length&&e.every((l,d)=>l===r[d])?r:(m(t,e),e)})},[i,n,t]);const u=f.useCallback((r,e)=>{!r||!e||r===e||c(s=>{const l=s.indexOf(r),d=s.indexOf(e);if(l===-1||d===-1)return s;const w=s.slice(),[h]=w.splice(l,1);return w.splice(d,0,h),m(t,w),w})},[t]),a=f.useCallback(()=>{m(t,n),c(n)},[t,n]);return{order:o,reorder:u,reset:a}}export{p as u};
1
+ import{r as f}from"./__vite-browser-external-2g_4s3ot.js";function O(t){if(typeof window>"u")return null;try{const n=window.localStorage.getItem(t);if(!n)return null;const i=JSON.parse(n);return Array.isArray(i)?i.filter(o=>typeof o=="string"):null}catch{return null}}function m(t,n){if(!(typeof window>"u"))try{window.localStorage.setItem(t,JSON.stringify(n))}catch{}}function S(t,n){if(!t)return n;const i=new Set(n),o=t.filter(u=>i.has(u)),c=n.filter(u=>!o.includes(u));return[...o,...c]}function p(t,n){const i=f.useMemo(()=>n.join("|"),[n]),[o,c]=f.useState(()=>S(O(t),n));f.useEffect(()=>{c(r=>{const e=S(r,n);return e.length===r.length&&e.every((l,d)=>l===r[d])?r:(m(t,e),e)})},[i,n,t]);const u=f.useCallback((r,e)=>{!r||!e||r===e||c(s=>{const l=s.indexOf(r),d=s.indexOf(e);if(l===-1||d===-1)return s;const w=s.slice(),[h]=w.splice(l,1);return w.splice(d,0,h),m(t,w),w})},[t]),a=f.useCallback(()=>{m(t,n),c(n)},[t,n]);return{order:o,reorder:u,reset:a}}export{p as u};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BotAnimated-KDWI_YcZ.js","assets/__vite-browser-external-2g_4s3ot.js","assets/__vite-browser-external-LpFw4zXh.css","assets/skins-Mc0sI20C.js"])))=>i.map(i=>d[i]);
2
+ import{r as s,j as g,_ as T,A as B,p as M,bd as P,be as $,bf as z,bg as N}from"./__vite-browser-external-2g_4s3ot.js";const I=Object.assign(Object.create(null),{clawd:"clawd",bot:"vector"});function F(e){return I[f(e)]||"atlas"}function f(e){const t=String(e||"").trim().toLowerCase();return/^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$/.test(t)?t:"clawd"}const D=.84,U=1.35,V=Object.assign(Object.create(null),{clawd:D,bot:U});function R(e){return V[f(e)]??1}const H={idle:{row:0,durations:[280,110,110,140,140,320]},"running-right":{row:1,durations:[120,120,120,120,120,120,120,220]},"running-left":{row:2,durations:[120,120,120,120,120,120,120,220]},waving:{row:3,durations:[140,140,140,280]},jumping:{row:4,durations:[140,140,140,140,280]},failed:{row:5,durations:[140,140,140,140,140,140,140,240]},waiting:{row:6,durations:[150,150,150,150,150,260]},running:{row:7,durations:[120,120,120,120,120,220]},review:{row:8,durations:[150,150,150,150,150,280]}};function q(e){return["error","disconnected","working-overheated"].includes(e)?"failed":["happy","waking","mini-happy","jumping"].includes(e)?"jumping":["working-typing","working-ultrathink","working-juggling","running"].includes(e)?"running":["working-thinking","working-wizard","review"].includes(e)?"review":["sleeping","idle-doze","mini-sleep","waiting"].includes(e)?"waiting":["mini-peek","waving"].includes(e)?"waving":e==="running-left"||e==="running-right"?e:"idle"}function K(){const[e,t]=s.useState(()=>typeof document>"u"?!0:document.visibilityState!=="hidden");return s.useEffect(()=>{if(typeof document>"u")return;const n=()=>t(document.visibilityState!=="hidden");return document.addEventListener("visibilitychange",n),()=>document.removeEventListener("visibilitychange",n)},[]),e}function W(){const[e,t]=s.useState(()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches);return s.useEffect(()=>{if(typeof window.matchMedia!="function")return;const n=window.matchMedia("(prefers-reduced-motion: reduce)"),i=o=>t(o.matches);return n.addEventListener("change",i),()=>n.removeEventListener("change",i)},[]),e}function G({character:e,pet:t=null,state:n="idle-living",dragState:i=null,size:o=48,className:d="",lookDirectionIndex:l=null}){const r=f(e),u=i==="running-left"||i==="running-right"?i:q(n),c=H[u],a=t?.spriteVersionNumber===2?2:1,p=a===2?11:9,w=a===2&&u==="idle"&&Number.isInteger(l)?(l%16+16)%16:null,h=w==null?c.row:9+Math.floor(w/8),m=w==null?null:w%8,k=W(),b=K(),[y,S]=s.useState(0);s.useEffect(()=>{if(S(0),k||!b||w!=null)return;let E=!1,A=0;const _=C=>{A=window.setTimeout(()=>{if(E)return;const L=(C+1)%c.durations.length;S(L),_(L)},c.durations[C])};return _(0),()=>{E=!0,window.clearTimeout(A)}},[w,k,b,c]);const O=s.useMemo(()=>({width:o*(192/208),height:o,backgroundImage:`url(${t?.assetUrl||`/pets/${r}/spritesheet.webp`})`,backgroundRepeat:"no-repeat",backgroundSize:`800% ${p*100}%`,backgroundPosition:`${(m??y)/7*100}% ${h/(p-1)*100}%`,imageRendering:"pixelated"}),[p,m,h,y,r,t?.assetUrl,o]);return g.jsx("div",{"aria-hidden":"true",className:`pet-atlas-animated ${d}`,style:O})}const X=s.lazy(()=>T(()=>import("./BotAnimated-KDWI_YcZ.js"),__vite__mapDeps([0,1,2,3])).then(e=>({default:e.BotAnimated}))),x={"idle-living":"idle/living.svg","idle-doze":"idle/doze.svg","idle-follow":"idle/follow.svg","idle-look":"idle/look.svg","idle-yawn":"idle/yawn.svg","idle-collapse":"idle/collapse.svg","working-building":"working/building.svg","working-carrying":"working/carrying.svg","working-conducting":"working/conducting.svg","working-confused":"working/confused.svg","working-debugger":"working/debugger.svg","working-juggling":"working/juggling.svg","working-overheated":"working/overheated.svg","working-pushing":"working/pushing.svg","working-sweeping":"working/sweeping.svg","working-thinking":"working/thinking.svg","working-typing":"working/typing.svg","working-ultrathink":"working/ultrathink.svg","working-wizard":"working/wizard.svg","mini-alert":"mini/alert.svg","mini-crabwalk":"mini/crabwalk.svg","mini-enter":"mini/enter.svg","mini-enter-sleep":"mini/enter-sleep.svg","mini-happy":"mini/happy.svg","mini-idle":"mini/idle.svg","mini-peek":"mini/peek.svg","mini-sleep":"mini/sleep.svg","react-double":"react/double.svg","react-drag":"react/drag.svg","react-left":"react/left.svg","react-right":"react/right.svg","collapse-sleep":"sleep/collapse-sleep.svg",sleeping:"sleep/sleeping.svg",wake:"sleep/wake.svg",disconnected:"status/disconnected.svg",error:"status/error.svg",notification:"status/notification.svg",happy:"happy.svg","static-base":"static-base.svg"},v=new Map;async function J(e){if(v.has(e))return v.get(e);if(typeof fetch!="function")return null;let t;try{t=await fetch(`/clawd/${e}`)}catch{return null}if(!t.ok)return null;const i=(await t.text()).replace(/<svg([^>]*)>/,(o,d)=>`<svg${d.replace(/\s+width="[^"]*"/g,"").replace(/\s+height="[^"]*"/g,"")} width="100%" height="100%">`);return v.set(e,i),i}function Q({state:e="idle-living",size:t=48,className:n=""}){const[i,o]=s.useState(""),d=s.useRef(null),r=Y()?"static-base":e,u=x[r]||x["static-base"];return s.useEffect(()=>{let c=!1;return J(u).then(a=>{!c&&a&&o(a)}),()=>{c=!0}},[u]),s.useEffect(()=>{const c=d.current?.querySelector("svg");if(c)try{const a=c.getBBox();a.width>0&&a.height>0&&c.setAttribute("viewBox",`${a.x-2} ${a.y-2} ${a.width+4} ${a.height+4}`)}catch{}},[i]),g.jsx("div",{ref:d,"aria-hidden":"true",className:`clawd-animated ${n}`,style:{width:t,height:t,display:"inline-flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},dangerouslySetInnerHTML:{__html:i}})}function ae({state:e="idle-living",size:t=48,className:n="",character:i="clawd",pet:o=null,lookDirectionIndex:d=null,botColor:l="auto"}){const r=f(i),u=F(r);return u==="vector"?g.jsx(s.Suspense,{fallback:g.jsx("span",{"aria-hidden":"true",style:{width:t,height:t,display:"inline-block"}}),children:g.jsx(X,{state:e,size:t*R(r),className:n,color:l})}):u==="atlas"?g.jsx(G,{character:r,pet:o,state:e,size:t,className:n,lookDirectionIndex:d}):g.jsx(Q,{state:e,size:t*R(r),className:n})}function Y(){const[e,t]=s.useState(()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches);return s.useEffect(()=>{if(typeof window.matchMedia!="function")return;const n=window.matchMedia("(prefers-reduced-motion: reduce)"),i=o=>t(o.matches);return n.addEventListener("change",i),()=>n.removeEventListener("change",i)},[]),e}const le="cercle",Z="neutre",ee="encre",te="creme",ce={light:"#f8fafc",dark:"#0f172a"};function ne(e){return e?te:ee}const j=["auto","bleu","turquoise","vert","ambre","rose","violet"];function de(e,t){const n=String(e||"auto");return n==="auto"||!j.includes(n)?ne(t):n}const ie={"idle-living":{state:"idle",expression:"neutre"},"idle-look":{state:"idle",expression:"curieux"},"idle-follow":{state:"idle",expression:"attentif"},"idle-yawn":{state:"idle",expression:"somnolent"},"static-base":{state:"idle",expression:"neutre"},sleeping:{state:"sleep"},"idle-doze":{state:"sleep"},"idle-collapse":{state:"sleep"},"collapse-sleep":{state:"sleep"},"mini-enter-sleep":{state:"sleep"},"mini-sleep":{state:"sleep"},waiting:{state:"sleep"},"working-typing":{state:"thinking"},"working-thinking":{state:"thinking"},"working-building":{state:"thinking"},"working-debugger":{state:"thinking"},running:{state:"thinking"},review:{state:"thinking"},"working-juggling":{state:"orbit"},"working-wizard":{state:"orbit"},"working-carrying":{state:"orbit"},"working-conducting":{state:"orbit"},"working-ultrathink":{state:"swirl"},"working-overheated":{state:"burst"},"working-confused":{state:"wide"},error:{state:"alert"},disconnected:{state:"alert"},happy:{state:"play"},jumping:{state:"play"},"mini-happy":{state:"play"},waking:{state:"play"},wake:{state:"play"},"react-double":{state:"play"},notification:{state:"notify"},"mini-alert":{state:"notify"},"mini-peek":{state:"wink"},waving:{state:"wink"},"mini-idle":{state:"idle",expression:"neutre"},"mini-enter":{state:"wink"},"running-left":{state:"comet"},"running-right":{state:"comet"},"react-drag":{state:"comet"}},re={state:"idle",expression:Z};function ue(e){return ie[e]||re}const se={visible:!1,character:"clawd",size:"medium",botColor:"auto"};function ge(){const e=(B()||M())&&P(),[t,n]=s.useState(se),[i,o]=s.useState(!1);s.useEffect(()=>{if(!e)return;const l=$(r=>{o(!0),n({visible:!!r.visible,character:f(r.character),size:["small","medium","large"].includes(r.size)?r.size:"medium",botColor:j.includes(r.botColor)?r.botColor:"auto"})});return z(),l},[e]);const d=s.useCallback((l,r)=>{n(u=>({...u,[l]:r})),e&&N(l,r)},[e]);return{available:e,loaded:i,settings:t,setSetting:d}}export{j as B,ae as C,ee as a,te as b,le as c,ce as d,ue as e,F as p,de as r,ge as u};
@@ -0,0 +1 @@
1
+ import{r as o}from"./__vite-browser-external-2g_4s3ot.js";import{h as r,i as t,p as s}from"./react-DlHjGQFN.js";function i(){!r.current&&t();const[e]=o.useState(s.current);return e}export{i as u};
@@ -1 +1 @@
1
- import{d as y,u as l,e as A,M as p,b as h,f as C,g as V,j as u}from"./react-B7SkZTgg.js";import{r as f}from"./__vite-browser-external-DUJeOWgd.js";function x(...t){const e=!Array.isArray(t[0]),n=e?0:-1,o=t[0+n],s=t[1+n],c=t[2+n],r=t[3+n],a=y(s,c,r);return e?a(o):a}function E(t){const e=l(()=>A(t)),{isStatic:n}=f.useContext(p);if(n){const[,o]=f.useState(t);f.useEffect(()=>e.on("change",o),[])}return e}function m(t,e){const n=E(e()),o=()=>n.set(e());return o(),h(()=>{const s=()=>V.preRender(o,!1,!0),c=t.map(r=>r.on("change",s));return()=>{c.forEach(r=>r()),C(o)}}),n}function L(t){u.current=[],t();const e=m(u.current,t);return u.current=void 0,e}function g(t,e,n,o){if(typeof t=="function")return L(t);const c=typeof e=="function"?e:x(e,n,o),r=Array.isArray(t)?i(t,c):i([t],([d])=>c(d)),a=Array.isArray(t)?void 0:t.accelerate;return a&&!a.isTransformed&&typeof e!="function"&&Array.isArray(n)&&o?.clamp!==!1&&(r.accelerate={...a,times:e,keyframes:n,isTransformed:!0}),r}function i(t,e){const n=l(()=>[]);return m(t,()=>{n.length=0;const o=t.length;for(let s=0;s<o;s++)n[s]=t[s].get();return e(n)})}export{g as a,E as u};
1
+ import{d as y,u as l,e as A,M as p,b as h,f as C,g as V,j as u}from"./react-DlHjGQFN.js";import{r as f}from"./__vite-browser-external-2g_4s3ot.js";function x(...t){const e=!Array.isArray(t[0]),n=e?0:-1,o=t[0+n],s=t[1+n],c=t[2+n],r=t[3+n],a=y(s,c,r);return e?a(o):a}function E(t){const e=l(()=>A(t)),{isStatic:n}=f.useContext(p);if(n){const[,o]=f.useState(t);f.useEffect(()=>e.on("change",o),[])}return e}function m(t,e){const n=E(e()),o=()=>n.set(e());return o(),h(()=>{const s=()=>V.preRender(o,!1,!0),c=t.map(r=>r.on("change",s));return()=>{c.forEach(r=>r()),C(o)}}),n}function L(t){u.current=[],t();const e=m(u.current,t);return u.current=void 0,e}function g(t,e,n,o){if(typeof t=="function")return L(t);const c=typeof e=="function"?e:x(e,n,o),r=Array.isArray(t)?i(t,c):i([t],([d])=>c(d)),a=Array.isArray(t)?void 0:t.accelerate;return a&&!a.isTransformed&&typeof e!="function"&&Array.isArray(n)&&o?.clamp!==!1&&(r.accelerate={...a,times:e,keyframes:n,isTransformed:!0}),r}function i(t,e){const n=l(()=>[]);return m(t,()=>{n.length=0;const o=t.length;for(let s=0;s<o;s++)n[s]=t[s].get();return e(n)})}export{g as a,E as u};
@@ -0,0 +1 @@
1
+ import{t as v,w as M,r as w,c as P,aS as O,aT as R,aU as S,aV as z}from"./__vite-browser-external-2g_4s3ot.js";import{l as q,i as _,L as F,a as T}from"./use-limits-display-prefs-D3HOcRFv.js";import{u as j}from"./use-latest-request-guard-DhGg1cDS.js";const x="native:notificationPermission";let D=null;function I(){return typeof window<"u"&&!!window.chrome?.webview}function L(){return v()?D||"unknown":I()?"granted":typeof Notification>"u"?"unsupported":Notification.permission}function $(e){if(typeof window>"u")return()=>{};const i=n=>{const s=n?.detail?.status;typeof s=="string"&&(D=s),e(L())};return window.addEventListener(x,i),e(L()),v()&&M({type:"getNotificationStatus"}),()=>window.removeEventListener(x,i)}async function B(){if(v()){M({type:"requestNotificationPermission"});return}I()||typeof Notification<"u"&&Notification.permission==="default"&&await Notification.requestPermission().catch(()=>"denied")}const K="tt.limitAlerts.enabled";function V(){try{return window.localStorage.getItem(K)==="1"}catch{return!1}}function le(){const[e,i]=w.useState(V),[n,s]=w.useState("unknown");w.useEffect(()=>$(s),[]);const y=w.useCallback(async o=>{const l=!!o;l&&await B();try{window.localStorage.setItem(K,l?"1":"0")}catch{}i(l)},[]);return{enabled:e,setEnabled:y,permissionBlocked:n==="denied"}}function G(e,i){if(!(e>0))return null;const n=(e-i)/e;return Number.isFinite(n)?Math.min(Math.max(n,0),1):null}function U(e,i,n=.03){return e>i+n}function H(e){const i=Math.max(0,Math.floor(e)),n=Math.floor(i/3600);return n>24?`${Math.floor(n/24)}d`:n>0?`${n}h`:`${Math.floor(i/60)}m`}function J(e,i){if(typeof e.windowSeconds=="number")return e.windowSeconds;if(e.windowSecondsField&&i){const n=i[e.windowSecondsField];return typeof n=="number"&&n>0?n:null}return null}function W(e){return e==null?NaN:typeof e=="number"?e*1e3:Date.parse(e)}function Y({usedPercent:e,windowSeconds:i,resetMs:n,mode:s,now:y=Date.now()}){const o=Math.min(Math.max(Number(e)||0,0),100)/100,l={pacePercent:null,paceOver:!1,expectedPercent:null,runsOutEta:null,projectedEnd:null};if(!(i>0)||!Number.isFinite(n)||n<=y)return l;const a=Math.max(0,(n-y)/1e3),r=G(i,a);if(r==null)return l;if(l.expectedPercent=Math.round(r*100),l.paceOver=U(o,r),o>0){const m=s==="remaining"?1-r:r;l.pacePercent=m*100}if(r>.02&&o>0){const m=i*r,c=o/m,f=o/r;f>=1&&c>0?l.runsOutEta=H((1-o)/c):l.projectedEnd=Math.round(Math.min(f,1)*100)}return l}const Q={claude:{windows(e){const i=Array.isArray(e.weekly_scoped)?e.weekly_scoped.map(n=>({key:`scoped-${n.label}`,label:n.label,window:n,pctField:"utilization",resetField:"resets_at",windowSeconds:604800})):[];return[{key:"5h",labelKey:"limits.label.claude_5h",window:e.five_hour,pctField:"utilization",resetField:"resets_at",windowSeconds:5*3600},{key:"7d",labelKey:"limits.label.claude_7d",window:e.seven_day,pctField:"utilization",resetField:"resets_at",windowSeconds:7*86400},{key:"opus",labelKey:"limits.label.claude_opus",window:e.seven_day_opus,pctField:"utilization",resetField:"resets_at",windowSeconds:7*86400},...i]}},codex:{extra:"codex_meta",windows(e){return[{key:"5h",labelKey:"limits.label.codex_5h",window:e.primary_window,windowSecondsField:"limit_window_seconds"},{key:"7d",labelKey:"limits.label.codex_7d",window:e.secondary_window,windowSecondsField:"limit_window_seconds"},{key:"credits",labelKey:"limits.label.codex_credits",window:e.credit_window},{key:"spark-5h",labelKey:"limits.label.codex_spark_5h",window:e.spark_primary_window,windowSecondsField:"limit_window_seconds"},{key:"spark-7d",labelKey:"limits.label.codex_spark_7d",window:e.spark_secondary_window,windowSecondsField:"limit_window_seconds"}]}},cursor:{windows(e){return[{key:"plan",labelKey:"limits.label.cursor_plan",window:e.primary_window,windowSecondsField:"limit_window_seconds"},{key:"auto",labelKey:"limits.label.cursor_auto",window:e.secondary_window,windowSecondsField:"limit_window_seconds"},{key:"api",labelKey:"limits.label.cursor_api",window:e.tertiary_window,windowSecondsField:"limit_window_seconds"},{key:"grok-bot",labelKey:"limits.label.cursor_grok_bot",window:e.quaternary_window,windowSecondsField:"limit_window_seconds"}]}},gemini:{windows(e){return[{key:"pro",labelKey:"limits.label.gemini_pro",window:e.primary_window},{key:"flash",labelKey:"limits.label.gemini_flash",window:e.secondary_window},{key:"lite",labelKey:"limits.label.gemini_lite",window:e.tertiary_window}]}},kimi:{extra:"kimi_parallel",windows(e){return[{key:"weekly",labelKey:"limits.label.kimi_weekly",window:e.primary_window,windowSeconds:7*86400},{key:"5h",labelKey:"limits.label.kimi_5h",window:e.secondary_window,windowSeconds:5*3600},{key:"total",labelKey:"limits.label.kimi_total",window:e.tertiary_window}]}},kiro:{extra:"kiro_credits",windows(e){return[{key:"month",labelKey:"limits.label.kiro_month",window:e.primary_window},{key:"bonus",labelKey:"limits.label.kiro_bonus",window:e.secondary_window}]}},grok:{windows(e){const i=typeof e.period_type=="string"?e.period_type:null,n=i==="weekly"?"limits.label.grok_week":i==="daily"?"limits.label.grok_day":"limits.label.grok_month",s=i==="weekly"?7*86400:i==="daily"?86400:void 0;return[{key:i==="weekly"?"week":i==="daily"?"day":"month",labelKey:n,window:e.primary_window,windowSeconds:s},{key:"ondemand",labelKey:"limits.label.grok_ondemand",window:e.secondary_window}]}},antigravity:{windows(e){return[{key:"claude-weekly",labelKey:"limits.label.antigravity_claude_weekly",window:e.primary_window},{key:"claude-5h",labelKey:"limits.label.antigravity_claude_5h",window:e.secondary_window},{key:"gemini-weekly",labelKey:"limits.label.antigravity_gemini_weekly",window:e.tertiary_window},{key:"gemini-5h",labelKey:"limits.label.antigravity_gemini_5h",window:e.quaternary_window}]}},copilot:{extra:"copilot_otel",windows(e){return[{key:"premium",labelKey:"limits.label.copilot_premium",window:e.primary_window},{key:"chat",labelKey:"limits.label.copilot_chat",window:e.secondary_window}]}},zcode:{extra:"zcode_reset_bank",windows(e){if(e.plan_kind==="coding-plan")return[{key:"5h",labelKey:"limits.label.zcode_5h",window:e.primary_window},{key:"weekly",labelKey:"limits.label.zcode_weekly",window:e.secondary_window},{key:"tools",labelKey:"limits.label.zcode_tools",window:e.tertiary_window}];const i=Array.isArray(e.buckets)?e.buckets.filter(n=>n?.label&&n.window):[];return i.length?i.map((n,s)=>({key:`bucket-${n.entitlement_id||s}`,label:n.label,window:n.window,...n.period==="one_time"?{timeKind:"expiry"}:{}})):[{key:"glm52",labelKey:"limits.label.zcode_glm52",window:e.primary_window},{key:"glm5t",labelKey:"limits.label.zcode_glm5t",window:e.secondary_window}]}},opencodeGo:{windows(e){return[{key:"5h",labelKey:"limits.label.opencode_go_5h",window:e.primary_window},{key:"weekly",labelKey:"limits.label.opencode_go_weekly",window:e.secondary_window},{key:"monthly",labelKey:"limits.label.opencode_go_monthly",window:e.tertiary_window}]}},qoder:{windows(e){return[{key:"credits",labelKey:"limits.label.qoder_credits",window:e.primary_window},{key:"ultimate",labelKey:"limits.label.qoder_ultimate",window:e.secondary_window,timeKind:"expiry"}]}},qoderCn:{windows(e){return[{key:"credits",labelKey:"limits.label.qoder_cn_credits",window:e.primary_window},{key:"ultimate",labelKey:"limits.label.qoder_cn_ultimate",window:e.secondary_window,timeKind:"expiry"}]}},codingPlan:{windows(e){return[{key:"5h",labelKey:"limits.label.ark_coding_plan_5h",window:e.primary_window},{key:"weekly",labelKey:"limits.label.ark_coding_plan_weekly",window:e.secondary_window},{key:"monthly",labelKey:"limits.label.ark_coding_plan_monthly",window:e.tertiary_window}]}},commandCode:{windows(e){return[{key:"5h",labelKey:"limits.label.command_code_5h",window:e.primary_window},{key:"weekly",labelKey:"limits.label.command_code_weekly",window:e.secondary_window}]}},agentPlan:{windows(e){return[{key:"5h",labelKey:"limits.label.ark_agent_plan_5h",window:e.primary_window},{key:"weekly",labelKey:"limits.label.ark_agent_plan_weekly",window:e.secondary_window},{key:"monthly",labelKey:"limits.label.ark_agent_plan_monthly",window:e.tertiary_window}]}},devin:{windows(e){return[{key:"daily",labelKey:"limits.label.devin_daily",window:e.primary_window,windowSecondsField:"limit_window_seconds"},{key:"weekly",labelKey:"limits.label.devin_weekly",window:e.secondary_window,windowSecondsField:"limit_window_seconds"}]}}},A="tt.limitAlerts.cycles.v1";function X(){try{return JSON.parse(window.localStorage.getItem(A)||"{}")}catch{return{}}}function Z(e){try{window.localStorage.setItem(A,JSON.stringify(e))}catch{}}function ee(e,{now:i=Date.now()}={}){const n=[],s=Q;for(const[y,o]of Object.entries(e||{})){const l=s[y];if(!(!o?.configured||o.error||!l))for(const a of l.windows(o)){if(!a.window)continue;const r=Number(a.pctField==="utilization"?a.window.utilization:a.window.used_percent),m=a.resetField==="resets_at"?a.window.resets_at:a.window.reset_at,c=W(m),f=Y({usedPercent:r,windowSeconds:J(a,a.window),resetMs:c,mode:"used",now:i});!f.runsOutEta||!f.paceOver||r<20||!(c>i)||n.push({id:`${y}:${a.key}:${c}`,providerId:y,windowKey:a.key,resetMs:c,usedPercent:r,runsOutEta:f.runsOutEta})}}return n}function ie(e){const i=X(),n=ee(e);for(const o of n){if(i[o.id])continue;const l=q(o.providerId),a=P("limits.alert.title",{provider:l}),r=P("limits.alert.body",{eta:o.runsOutEta,percent:Math.round(o.usedPercent)});let m=O({title:a,body:r,id:o.id});!m&&typeof Notification<"u"&&Notification.permission==="granted"&&(new Notification(a,{body:r,tag:o.id}),m=!0),m&&(i[o.id]=Date.now())}const s=Date.now()-864e5,y=Object.fromEntries(Object.entries(i).filter(([o,l])=>{const a=Number(o.split(":").at(-1));return Number.isFinite(a)?a>=s:Number(l)>=s}).slice(-100));return Z(y),n.length}function h(e,i){return!e||i||!e.devin||e.devin.configured===!1&&Object.keys(e.devin).length===1?e:{...e,devin:{configured:!1}}}function re(e){const i=z(),n=i&&!!e?.initialState,[s,y]=w.useState(_),[o,l]=w.useState(()=>n?h(e?.initialState?.data??null,_()):null),[a,r]=w.useState(()=>n?e?.initialState?.error??null:null),[m,c]=w.useState(i&&!n),f=!!e?.initialRefresh,E=!!e?.publishToPreloadCache,b=j([s,i]);w.useEffect(()=>{if(typeof window>"u")return;const d=()=>y(_()),t=u=>{T(u.key)&&d()};return window.addEventListener(F,d),window.addEventListener("storage",t),()=>{window.removeEventListener(F,d),window.removeEventListener("storage",t)}},[]),w.useEffect(()=>{if(!(!i||!o||typeof window>"u"))try{window.localStorage.getItem(K)==="1"&&ie(o)}catch{}},[o,i]);const p=w.useCallback((d,t)=>{!i||!E||!d||typeof d!="object"||R(h(d,_()),{source:t})},[i,E]),C=w.useCallback(async()=>{if(!i)return null;const d=b();try{const t=await S({refresh:!0,devinEnabled:_()});if(!d())return null;const k=h(t&&typeof t=="object"?t:null,_());return l(k),r(null),c(!1),p(k,"manual-refresh"),k}catch(t){return d()&&(r(t?.message||String(t)),c(!1)),null}},[b,i,p]),g=w.useCallback(async()=>{if(!i)return;const d=b();try{const t=await S({devinEnabled:_()});if(!d())return;const u=t&&typeof t=="object"?t:null;l(h(u,_())),r(null),c(!1),p(u,"page-load")}catch(t){if(!d())return;r(t?.message||String(t)),c(!1)}},[b,i,p]);w.useEffect(()=>{if(!i||typeof window>"u"||typeof document>"u")return;const d=15e3;let t=Date.now();const u=()=>{if(document.visibilityState!=="visible")return;const k=Date.now();k-t<d||(t=k,g())};return window.addEventListener("focus",u),document.addEventListener("visibilitychange",u),()=>{window.removeEventListener("focus",u),document.removeEventListener("visibilitychange",u)}},[i,g]);const N=w.useRef(s);return w.useEffect(()=>{N.current!==s&&(N.current=s,i&&(s||l(d=>h(d,!1)),g()))},[s,i,g]),w.useEffect(()=>{if(!i){l(null),r(null),c(!1);return}if(n&&!f)return;const d=b();(async()=>{try{const t=await S({devinEnabled:_()});if(!d())return;const u=t&&typeof t=="object"?t:null;l(h(u,_())),r(null),p(u,"page-load")}catch(t){if(!d())return;r(t?.message||String(t))}finally{d()&&c(!1)}})()},[b,n,f,i,p]),{data:o,error:a,isLoading:m,refresh:C}}export{Q as P,J as a,le as b,Y as c,W as r,ie as s,re as u};
@@ -1 +1 @@
1
- import{r as e,K as t,N as r,O as c}from"./__vite-browser-external-DUJeOWgd.js";const s=Object.freeze({currency:c,rate:1,symbol:"$",rates:{...r},rateSource:"default",rateFetchedAt:null,setCurrency:()=>{}});function a(){return e.useContext(t)??s}export{a as u};
1
+ import{r as e,C as t,D as r,z as c}from"./__vite-browser-external-2g_4s3ot.js";const s=Object.freeze({currency:c,rate:1,symbol:"$",rates:{...r},rateSource:"default",rateFetchedAt:null,setCurrency:()=>{}});function a(){return e.useContext(t)??s}export{a as u};
@@ -0,0 +1 @@
1
+ import{b2 as z,bP as oe,bO as me,bQ as te,bR as U,bS as Ye,bT as Me,bU as ze,bV as qt,bW as Et,bX as Kt,bY as je,bZ as Ct,b_ as $e,b$ as Ne,c0 as gt,c1 as Pt,r as b,ax as Gt,b1 as xe,b0 as Jt,b3 as Qt,c2 as Zt,K as en,J as tn}from"./__vite-browser-external-2g_4s3ot.js";import{a as nn,c as Ee,z as on}from"./composite-INW-ELWX.js";const de=Math.min,q=Math.max,Le=Math.round,Ce=Math.floor,K=e=>({x:e,y:e}),sn={left:"right",right:"left",bottom:"top",top:"bottom"};function Mt(e,t,n){return q(e,de(t,n))}function ne(e,t){return typeof e=="function"?e(t):e}function Y(e){return e.split("-")[0]}function G(e){return e.split("-")[1]}function Ue(e){return e==="x"?"y":"x"}function qe(e){return e==="y"?"height":"width"}function X(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function Ke(e){return Ue(X(e))}function rn(e,t,n){n===void 0&&(n=!1);const o=G(e),i=Ke(e),s=qe(i);let r=i==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(r=De(r)),[r,De(r)]}function cn(e){const t=De(e);return[Xe(e),t,Xe(t)]}function Xe(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const ht=["left","right"],pt=["right","left"],ln=["top","bottom"],fn=["bottom","top"];function an(e,t,n){switch(e){case"top":case"bottom":return n?t?pt:ht:t?ht:pt;case"left":case"right":return t?ln:fn;default:return[]}}function un(e,t,n,o){const i=G(e);let s=an(Y(e),n==="start",o);return i&&(s=s.map(r=>r+"-"+i),t&&(s=s.concat(s.map(Xe)))),s}function De(e){const t=Y(e);return sn[t]+e.slice(t.length)}function dn(e){var t,n,o,i;return{top:(t=e.top)!=null?t:0,right:(n=e.right)!=null?n:0,bottom:(o=e.bottom)!=null?o:0,left:(i=e.left)!=null?i:0}}function Lt(e){return typeof e!="number"?dn(e):{top:e,right:e,bottom:e,left:e}}function Te(e){const{x:t,y:n,width:o,height:i}=e;return{width:o,height:i,top:n,left:t,right:t+o,bottom:n+i,x:t,y:n}}function xt(e,t,n){let{reference:o,floating:i}=e;const s=X(t),r=Ke(t),c=qe(r),l=Y(t),f=s==="y",u=o.x+o.width/2-i.width/2,g=o.y+o.height/2-i.height/2,d=o[c]/2-i[c]/2;let a;switch(l){case"top":a={x:u,y:o.y-i.height};break;case"bottom":a={x:u,y:o.y+o.height};break;case"right":a={x:o.x+o.width,y:g};break;case"left":a={x:o.x-i.width,y:g};break;default:a={x:o.x,y:o.y}}const m=G(t);return m&&(a[r]+=d*(m==="end"?1:-1)*(n&&f?-1:1)),a}async function mn(e,t){var n;t===void 0&&(t={});const{x:o,y:i,platform:s,rects:r,elements:c,strategy:l}=e,{boundary:f="clippingAncestors",rootBoundary:u="viewport",elementContext:g="floating",altBoundary:d=!1,padding:a=0}=ne(t,e),m=Lt(a),p=c[d?g==="floating"?"reference":"floating":g],w=Te(await s.getClippingRect({element:(n=await(s.isElement==null?void 0:s.isElement(p)))==null||n?p:p.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(c.floating)),boundary:f,rootBoundary:u,strategy:l})),x=g==="floating"?{x:o,y:i,width:r.floating.width,height:r.floating.height}:r.reference,R=await(s.getOffsetParent==null?void 0:s.getOffsetParent(c.floating)),y=await(s.isElement==null?void 0:s.isElement(R))&&await(s.getScale==null?void 0:s.getScale(R))||{x:1,y:1},A=Te(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:c,rect:x,offsetParent:R,strategy:l}):x);return{top:(w.top-A.top+m.top)/y.y,bottom:(A.bottom-w.bottom+m.bottom)/y.y,left:(w.left-A.left+m.left)/y.x,right:(A.right-w.right+m.right)/y.x}}const gn=50,hn=async(e,t,n)=>{const{placement:o="bottom",strategy:i="absolute",middleware:s=[],platform:r}=n,c=r.detectOverflow?r:{...r,detectOverflow:mn},l=await(r.isRTL==null?void 0:r.isRTL(t));let f=await r.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:g}=xt(f,o,l),d=o,a=0;const m={};for(let h=0;h<s.length;h++){const p=s[h];if(!p)continue;const{name:w,fn:x}=p,{x:R,y,data:A,reset:v}=await x({x:u,y:g,initialPlacement:o,placement:d,strategy:i,middlewareData:m,rects:f,platform:c,elements:{reference:e,floating:t}});u=R??u,g=y??g,m[w]={...m[w],...A},v&&a<gn&&(a++,typeof v=="object"&&(v.placement&&(d=v.placement),v.rects&&(f=v.rects===!0?await r.getElementRects({reference:e,floating:t,strategy:i}):v.rects),{x:u,y:g}=xt(f,d,l)),h=-1)}return{x:u,y:g,placement:d,strategy:i,middlewareData:m}},pn=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:i,middlewareData:s,rects:r,initialPlacement:c,platform:l,elements:f}=t,{mainAxis:u=!0,crossAxis:g=!0,fallbackPlacements:d,fallbackStrategy:a="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:h=!0,...p}=ne(e,t);if((n=s.arrow)!=null&&n.alignmentOffset)return{};const w=Y(i),x=X(c),R=Y(c)===c,y=await(l.isRTL==null?void 0:l.isRTL(f.floating)),A=d||(R||!h?[De(c)]:cn(c)),v=m!=="none";!d&&v&&A.push(...un(c,h,m,y));const P=[c,...A],S=await l.detectOverflow(t,p),L=[];let M=((o=s.flip)==null?void 0:o.overflows)||[];if(u&&L.push(S[w]),g){const k=rn(i,r,y);L.push(S[k[0]],S[k[1]])}if(M=[...M,{placement:i,overflows:L}],!L.every(k=>k<=0)){var E,$;const k=(((E=s.flip)==null?void 0:E.index)||0)+1,V=P[k];if(V&&(!(g==="alignment"?x!==X(V):!1)||M.every(O=>X(O.placement)===x?O.overflows[0]>0:!0)))return{data:{index:k,overflows:M},reset:{placement:V}};let T=($=M.filter(F=>F.overflows[0]<=0).sort((F,O)=>F.overflows[1]-O.overflows[1])[0])==null?void 0:$.placement;if(!T)switch(a){case"bestFit":{var W;const F=(W=M.filter(O=>{if(v){const H=X(O.placement);return H===x||H==="y"}return!0}).map(O=>[O.placement,O.overflows.filter(H=>H>0).reduce((H,B)=>H+B,0)]).sort((O,H)=>O[1]-H[1])[0])==null?void 0:W[0];F&&(T=F);break}case"initialPlacement":T=c;break}if(i!==T)return{reset:{placement:T}}}return{}}}},Dt=new Set(["left","top"]);async function xn(e,t){const{placement:n,platform:o,elements:i}=e,s=await(o.isRTL==null?void 0:o.isRTL(i.floating)),r=Y(n),c=G(n),l=X(n)==="y",f=Dt.has(r)?-1:1,u=s&&l?-1:1,g=ne(t,e);let{mainAxis:d,crossAxis:a,alignmentAxis:m}=typeof g=="number"?{mainAxis:g,crossAxis:0,alignmentAxis:null}:{mainAxis:g.mainAxis||0,crossAxis:g.crossAxis||0,alignmentAxis:g.alignmentAxis};return c&&typeof m=="number"&&(a=c==="end"?m*-1:m),l?{x:a*u,y:d*f}:{x:d*f,y:a*u}}const wn=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:i,y:s,placement:r,middlewareData:c}=t,l=await xn(t,e);return r===((n=c.offset)==null?void 0:n.placement)&&(o=c.arrow)!=null&&o.alignmentOffset?{}:{x:i+l.x,y:s+l.y,data:{...l,placement:r}}}}},yn=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:i,platform:s}=t,{mainAxis:r=!0,crossAxis:c=!1,limiter:l={fn:x=>{let{x:R,y}=x;return{x:R,y}}},...f}=ne(e,t),u={x:n,y:o},g=await s.detectOverflow(t,f),d=X(i),a=Ue(d);let m=u[a],h=u[d];const p=(x,R)=>Mt(R+g[x==="y"?"top":"left"],R,R-g[x==="y"?"bottom":"right"]);r&&(m=p(a,m)),c&&(h=p(d,h));const w=l.fn({...t,[a]:m,[d]:h});return{...w,data:{x:w.x-n,y:w.y-o,enabled:{[a]:r,[d]:c}}}}}},bn=function(e){return e===void 0&&(e={}),{options:e,fn(t){var n,o;const{x:i,y:s,placement:r,rects:c,middlewareData:l}=t,{offset:f=0,mainAxis:u=!0,crossAxis:g=!0}=ne(e,t),d={x:i,y:s},a=X(r),m=Ue(a);let h=d[m],p=d[a];const w=ne(f,t),x=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:(n=w.mainAxis)!=null?n:0,crossAxis:(o=w.crossAxis)!=null?o:0};if(u){const A=m==="y"?"height":"width",v=c.reference[m]-c.floating[A]+x.mainAxis,P=c.reference[m]+c.reference[A]-x.mainAxis;h<v?h=v:h>P&&(h=P)}if(g){var R,y;const A=m==="y"?"width":"height",v=Dt.has(Y(r)),P=c.reference[a]-c.floating[A]+(v&&((R=l.offset)==null?void 0:R[a])||0)+(v?0:x.crossAxis),S=c.reference[a]+c.reference[A]+(v?0:((y=l.offset)==null?void 0:y[a])||0)-(v?x.crossAxis:0);p<P?p=P:p>S&&(p=S)}return{[m]:h,[a]:p}}}},vn=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:o,platform:i,elements:s}=t,{apply:r=()=>{},...c}=ne(e,t),l=await i.detectOverflow(t,c),f=Y(n),u=G(n),g=X(n)==="y",{width:d,height:a}=o.floating;let m,h;f==="top"||f==="bottom"?(m=f,h=u===(await(i.isRTL==null?void 0:i.isRTL(s.floating))?"start":"end")?"left":"right"):(h=f,m=u==="end"?"top":"bottom");const p=a-l.top-l.bottom,w=d-l.left-l.right,x=de(a-l[m],p),R=de(d-l[h],w),y=t.middlewareData.shift,A=!y;let v=x,P=R;y!=null&&y.enabled.x&&(P=w),y!=null&&y.enabled.y&&(v=p),A&&!u&&(g?P=d-2*q(l.left,l.right):v=a-2*q(l.top,l.bottom)),await r({...t,availableWidth:P,availableHeight:v});const S=await i.getDimensions(s.floating);return d!==S.width||a!==S.height?{reset:{rects:!0}}:{}}}};function Tt(e){const t=te(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const i=me(e),s=i?e.offsetWidth:n,r=i?e.offsetHeight:o,c=Le(n)!==s||Le(o)!==r;return c&&(n=s,o=r),{width:n,height:o,$:c}}function Ge(e){return z(e)?e:e.contextElement}function ue(e){const t=Ge(e);if(!me(t))return K(1);const n=t.getBoundingClientRect(),{width:o,height:i,$:s}=Tt(t);let r=(s?Le(n.width):n.width)/o,c=(s?Le(n.height):n.height)/i;return(!r||!Number.isFinite(r))&&(r=1),(!c||!Number.isFinite(c))&&(c=1),{x:r,y:c}}const Rn=K(0);function Ft(e){const t=U(e);return!Pt()||!t.visualViewport?Rn:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function An(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===U(e)}function se(e,t,n,o){t===void 0&&(t=!1),n===void 0&&(n=!1);const i=e.getBoundingClientRect(),s=Ge(e);let r=K(1);t&&(o?z(o)&&(r=ue(o)):r=ue(e));const c=An(s,n,o)?Ft(s):K(0);let l=(i.left+c.x)/r.x,f=(i.top+c.y)/r.y,u=i.width/r.x,g=i.height/r.y;if(s&&o){const d=U(s),a=z(o)?U(o):o;let m=d,h=gt(m);for(;h&&a!==m;){const p=ue(h),w=h.getBoundingClientRect(),x=te(h),R=w.left+(h.clientLeft+parseFloat(x.paddingLeft))*p.x,y=w.top+(h.clientTop+parseFloat(x.paddingTop))*p.y;l*=p.x,f*=p.y,u*=p.x,g*=p.y,l+=R,f+=y,m=U(h),h=gt(m)}}return Te({width:u,height:g,x:l,y:f})}function ke(e,t){const n=$e(e).scrollLeft;return t?t.left+n:se(oe(e)).left+n}function $t(e,t){const n=e.getBoundingClientRect(),o=n.left+t.scrollLeft-ke(e,n),i=n.top+t.scrollTop;return{x:o,y:i}}function On(e){let{elements:t,rect:n,offsetParent:o,strategy:i}=e;const s=i==="fixed",r=oe(o),c=t?Ye(t.floating):!1;if(o===r||c&&s)return n;let l={scrollLeft:0,scrollTop:0},f=K(1);const u=K(0),g=me(o);if((g||!s)&&((je(o)!=="body"||Ct(r))&&(l=$e(o)),g)){const a=se(o);f=ue(o),u.x=a.x+o.clientLeft,u.y=a.y+o.clientTop}const d=r&&!g&&!s?$t(r,l):K(0);return{width:n.width*f.x,height:n.height*f.y,x:n.x*f.x-l.scrollLeft*f.x+u.x+d.x,y:n.y*f.y-l.scrollTop*f.y+u.y+d.y}}function Sn(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function En(e){const t=$e(e),n=e.ownerDocument.body,o=q(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=q(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight);let s=-t.scrollLeft+ke(e);const r=-t.scrollTop;return te(n).direction==="rtl"&&(s+=q(e.clientWidth,n.clientWidth)-o),{width:o,height:i,x:s,y:r}}const Cn=25;function Pn(e,t,n){n===void 0&&(n="viewport");const o=n==="layoutViewport",i=U(e),s=oe(e),r=i.visualViewport;let c=s.clientWidth,l=s.clientHeight,f=0,u=0;if(r){const d=!Pt()||t==="fixed";o?d||(f=-r.offsetLeft,u=-r.offsetTop):(c=r.width,l=r.height,d&&(f=r.offsetLeft,u=r.offsetTop))}if(ke(s)<=0){const d=s.ownerDocument,a=d.body,m=getComputedStyle(a),h=d.compatMode==="CSS1Compat"&&parseFloat(m.marginLeft)+parseFloat(m.marginRight)||0,p=Math.abs(s.clientWidth-a.clientWidth-h),w=getComputedStyle(s).scrollbarGutter==="stable both-edges"?p/2:p;w<=Cn&&(c-=w)}return{width:c,height:l,x:f,y:u}}function Mn(e,t){const n=se(e,!0,t==="fixed"),o=n.top+e.clientTop,i=n.left+e.clientLeft,s=ue(e),r=e.clientWidth*s.x,c=e.clientHeight*s.y,l=i*s.x,f=o*s.y;return{width:r,height:c,x:l,y:f}}function wt(e,t,n){let o;if(t==="viewport"||t==="layoutViewport")o=Pn(e,n,t);else if(t==="document")o=En(oe(e));else if(z(t))o=Mn(t,n);else{const i=Ft(e);o={x:t.x-i.x,y:t.y-i.y,width:t.width,height:t.height}}return Te(o)}function Ln(e,t){const n=t.get(e);if(n)return n;let o=Ne(e,[],!1).filter(c=>z(c)&&je(c)!=="body"),i=null;const s=te(e).position==="fixed";let r=s?Me(e):e;for(;z(r)&&!ze(r);){const c=te(r),l=Et(r),f=i?i.position:s?"fixed":"";!l&&(f==="fixed"||f==="absolute"&&c.position==="static")?o=o.filter(g=>g!==r):i=c,r=Me(r)}return t.set(e,o),o}function Dn(e){let{element:t,boundary:n,rootBoundary:o,strategy:i}=e;const r=[...n==="clippingAncestors"?Ye(t)?[]:Ln(t,this._c):[].concat(n),o],c=wt(t,r[0],i);let l=c.top,f=c.right,u=c.bottom,g=c.left;for(let d=1;d<r.length;d++){const a=wt(t,r[d],i);l=q(a.top,l),f=de(a.right,f),u=de(a.bottom,u),g=q(a.left,g)}return{width:f-g,height:u-l,x:g,y:l}}function Tn(e){const{width:t,height:n}=Tt(e);return{width:t,height:n}}function Fn(e,t,n){const o=me(t),i=oe(t),s=n==="fixed",r=se(e,!0,s,t);let c={scrollLeft:0,scrollTop:0};const l=K(0);if((o||!s)&&((je(t)!=="body"||Ct(i))&&(c=$e(t)),o)){const d=se(t,!0,s,t);l.x=d.x+t.clientLeft,l.y=d.y+t.clientTop}!o&&i&&(l.x=ke(i));const f=i&&!o&&!s?$t(i,c):K(0),u=r.left+c.scrollLeft-l.x-f.x,g=r.top+c.scrollTop-l.y-f.y;return{x:u,y:g,width:r.width,height:r.height}}function _e(e){return te(e).position==="static"}function yt(e,t){if(!me(e)||te(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return oe(e)===n&&(n=n.ownerDocument.body),n}function kt(e,t){const n=U(e);if(Ye(e))return n;if(!me(e)){let i=Me(e);for(;i&&!ze(i);){if(z(i)&&!_e(i))return i;i=Me(i)}return n}let o=yt(e,t);for(;o&&qt(o)&&_e(o);)o=yt(o,t);return o&&ze(o)&&_e(o)&&!Et(o)?n:o||Kt(e)||n}const $n=async function(e){const t=this.getOffsetParent||kt,n=this.getDimensions,o=await n(e.floating);return{reference:Fn(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function kn(e){return te(e).direction==="rtl"}const Wn={convertOffsetParentRelativeRectToViewportRelativeRect:On,getDocumentElement:oe,getClippingRect:Dn,getOffsetParent:kt,getElementRects:$n,getClientRects:Sn,getDimensions:Tn,getScale:ue,isElement:z,isRTL:kn};function Wt(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Vn(e,t,n){let o=null,i;const s=oe(e);function r(){var u;clearTimeout(i),(u=o)==null||u.disconnect(),o=null}function c(u,g){u===void 0&&(u=!1),g===void 0&&(g=1),r();const d=e.getBoundingClientRect(),{left:a,top:m,width:h,height:p}=d;if(u||t(),!h||!p)return;const w=Ce(m),x=Ce(s.clientWidth-(a+h)),R=Ce(s.clientHeight-(m+p)),y=Ce(a),v={rootMargin:-w+"px "+-x+"px "+-R+"px "+-y+"px",threshold:q(0,de(1,g))||1};let P=!0;function S(L){const M=L[0].intersectionRatio;if(!Wt(d,e.getBoundingClientRect()))return c();if(M!==g){if(!P)return c();M?c(!1,M):i=setTimeout(()=>{c(!1,1e-7)},1e3)}P=!1}try{o=new IntersectionObserver(S,{...v,root:s.ownerDocument})}catch{o=new IntersectionObserver(S,v)}o.observe(e)}const l=U(e),f=()=>c(n);return l.addEventListener("resize",f),c(!0),()=>{l.removeEventListener("resize",f),r()}}function bt(e,t,n,o){o===void 0&&(o={});const{ancestorScroll:i=!0,ancestorResize:s=!0,elementResize:r=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:l=!1}=o,f=Ge(e),u=i||s?[...f?Ne(f):[],...t?Ne(t):[]]:[];u.forEach(w=>{i&&w.addEventListener("scroll",n),s&&w.addEventListener("resize",n)});const g=f&&c?Vn(f,n,s):null;let d=-1,a=null;r&&(a=new ResizeObserver(w=>{let[x]=w;x&&x.target===f&&a&&t&&(a.unobserve(t),cancelAnimationFrame(d),d=requestAnimationFrame(()=>{var R;(R=a)==null||R.observe(t)})),n()}),f&&!l&&a.observe(f),t&&a.observe(t));let m,h=l?se(e):null;l&&p();function p(){const w=se(e);h&&!Wt(h,w)&&n(),h=w,m=requestAnimationFrame(p)}return n(),()=>{var w;u.forEach(x=>{i&&x.removeEventListener("scroll",n),s&&x.removeEventListener("resize",n)}),g?.(),(w=a)==null||w.disconnect(),a=null,l&&cancelAnimationFrame(m)}}const Bn=wn,Hn=yn,_n=pn,In=vn,zn=bn,Nn=(e,t,n)=>{const o=new Map,i=n??{},s={...Wn,...i.platform,_c:o};return hn(e,t,{...i,platform:s})};var Xn=typeof document<"u",Yn=function(){},Pe=Xn?b.useLayoutEffect:Yn;function Fe(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,o,i;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(o=n;o--!==0;)if(!Fe(e[o],t[o]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(o=n;o--!==0;)if(!{}.hasOwnProperty.call(t,i[o]))return!1;for(o=n;o--!==0;){const s=i[o];if(!(s==="_owner"&&e.$$typeof)&&!Fe(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function Vt(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function vt(e,t){const n=Vt(e);return Math.round(t*n)/n}function Ie(e){const t=b.useRef(e);return Pe(()=>{t.current=e}),t}function jn(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:o=[],platform:i,elements:{reference:s,floating:r}={},transform:c=!0,whileElementsMounted:l,open:f}=e,[u,g]=b.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[d,a]=b.useState(o);Fe(d,o)||a(o);const[m,h]=b.useState(null),[p,w]=b.useState(null),x=b.useCallback(O=>{O!==v.current&&(v.current=O,h(O))},[]),R=b.useCallback(O=>{O!==P.current&&(P.current=O,w(O))},[]),y=s||m,A=r||p,v=b.useRef(null),P=b.useRef(null),S=b.useRef(u),L=l!=null,M=Ie(l),E=Ie(i),$=Ie(f),W=b.useCallback(()=>{if(!v.current||!P.current)return;const O={placement:t,strategy:n,middleware:d};E.current&&(O.platform=E.current),Nn(v.current,P.current,O).then(H=>{const B={...H,isPositioned:$.current!==!1};k.current&&!Fe(S.current,B)&&(S.current=B,Gt.flushSync(()=>{g(B)}))})},[d,t,n,E,$]);Pe(()=>{f===!1&&S.current.isPositioned&&(S.current.isPositioned=!1,g(O=>({...O,isPositioned:!1})))},[f]);const k=b.useRef(!1);Pe(()=>(k.current=!0,()=>{k.current=!1}),[]),Pe(()=>{if(y&&(v.current=y),A&&(P.current=A),y&&A){if(M.current)return M.current(y,A,W);W()}},[y,A,W,M,L]);const V=b.useMemo(()=>({reference:v,floating:P,setReference:x,setFloating:R}),[x,R]),T=b.useMemo(()=>({reference:y,floating:A}),[y,A]),F=b.useMemo(()=>{const O={position:n,left:0,top:0};if(!T.floating)return O;const H=vt(T.floating,u.x),B=vt(T.floating,u.y);return c?{...O,transform:"translate("+H+"px, "+B+"px)",...Vt(T.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:H,top:B}},[n,c,T.floating,u.x,u.y]);return b.useMemo(()=>({...u,update:W,refs:V,elements:T,floatingStyles:F}),[u,W,V,T,F])}const Un=(e,t)=>{const n=Bn(e);return{name:n.name,fn:n.fn,options:[e,t]}},qn=(e,t)=>{const n=Hn(e);return{name:n.name,fn:n.fn,options:[e,t]}},Kn=(e,t)=>({fn:zn(e).fn,options:[e,t]}),Gn=(e,t)=>{const n=_n(e);return{name:n.name,fn:n.fn,options:[e,t]}},Jn=(e,t)=>{const n=In(e);return{name:n.name,fn:n.fn,options:[e,t]}};function Qn(e){return Zn(e,e.rootContext)}function Zn(e,t){const{nodeId:n,externalTree:o}=e,i=t.useState("referenceElement"),s=t.useState("floatingElement"),r=t.useState("domReferenceElement"),c=t.useState("open"),l=t.useState("floatingId"),[f,u]=b.useState(null),[g,d]=b.useState(void 0),[a,m]=b.useState(void 0),h=b.useRef(null),p=nn(o),w=b.useMemo(()=>({reference:i,floating:s,domReference:r}),[i,s,r]),x=jn({...e,elements:{...w,...f&&{reference:f}}}),R=z(g)?g:null,y=a===void 0?t.state.floatingElement:a;t.useSyncedValue("referenceElement",g??null),t.useSyncedValue("domReferenceElement",g===void 0?r:R),t.useSyncedValue("floatingElement",y);const A=b.useCallback(E=>{const $=z(E)?{getBoundingClientRect:()=>E.getBoundingClientRect(),getClientRects:()=>E.getClientRects(),contextElement:E}:E;u($),x.refs.setReference($)},[x.refs]),v=b.useCallback(E=>{(z(E)||E===null)&&(h.current=E,d(E)),(z(x.refs.reference.current)||x.refs.reference.current===null||E!==null&&!z(E))&&x.refs.setReference(E)},[x.refs,d]),P=b.useCallback(E=>{m(E),x.refs.setFloating(E)},[x.refs]),S=b.useMemo(()=>({...x.refs,setReference:v,setFloating:P,setPositionReference:A,domReference:h}),[x.refs,v,P,A]),L=b.useMemo(()=>({...x.elements,domReference:r}),[x.elements,r]),M=b.useMemo(()=>({...x,dataRef:t.context.dataRef,open:c,onOpenChange:t.setOpen,events:t.context.events,floatingId:l,refs:S,elements:L,nodeId:n,rootStore:t}),[x,S,L,n,t,c,l]);return xe(()=>{r&&(h.current=r)},[r]),xe(()=>{t.context.dataRef.current.floatingContext=M;const E=p?.nodesRef.current.find($=>$.id===n);E&&(E.context=M)}),b.useMemo(()=>({...x,context:M,refs:S,elements:L,rootStore:t}),[x,S,L,M,t])}const eo=b.createContext(void 0);function to(){return b.useContext(eo)?.direction??"ltr"}const no=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:i,rects:s,platform:r,elements:c,middlewareData:l}=t,{element:f,padding:u=0,offsetParent:g="real"}=ne(e,t)||{};if(f==null)return{};const d=Lt(u),a={x:n,y:o},m=Ke(i),h=qe(m),p=await r.getDimensions(f),w=m==="y",x=w?"top":"left",R=w?"bottom":"right",y=w?"clientHeight":"clientWidth",A=s.reference[h]+s.reference[m]-a[m]-s.floating[h],v=a[m]-s.reference[m],P=g==="real"?await r.getOffsetParent?.(f):c.floating;let S=c.floating[y]||s.floating[h];(!S||!await r.isElement?.(P))&&(S=c.floating[y]||s.floating[h]);const L=A/2-v/2,M=S/2-p[h]/2-1,E=Math.min(d[x],M),$=Math.min(d[R],M),W=E,k=S-p[h]-$,V=S/2-p[h]/2+L,T=Mt(W,V,k),F=!l.arrow&&G(i)!=null&&V!==T&&s.reference[h]/2-(V<W?E:$)-p[h]/2<0,O=F?V<W?V-W:V-k:0;return{[m]:a[m]+O,data:{[m]:T,centerOffset:V-T-O,...F&&{alignmentOffset:O}},reset:F}}}),oo=(e,t)=>{const{name:n,fn:o}=no(e);return{name:n,fn:o,options:[e,t]}},io={name:"hide",async fn(e){const{width:t,height:n,x:o,y:i}=e.rects.reference,s=t===0&&n===0&&o===0&&i===0,r=await e.platform.detectOverflow(e,{elementContext:"reference"});return{data:{referenceHidden:r.top-n>=0||r.right-t>=0||r.bottom-n>=0||r.left-t>=0||s}}}},so={sideX:"left",sideY:"top"},ro="--available-width",co="--available-height",lo="--anchor-width",fo="--anchor-height",ao="--transform-origin",Rt=ro,At=co;function Bt(e,t,n){const o=e==="inline-start"||e==="inline-end";return{top:"top",right:o?n?"inline-start":"inline-end":"right",bottom:"bottom",left:o?n?"inline-end":"inline-start":"left"}[t]}function Ot(e,t,n){const{rects:o,placement:i}=e;return{side:Bt(t,Y(i),n),align:G(i)||"center",anchor:{width:o.reference.width,height:o.reference.height},positioner:{width:o.floating.width,height:o.floating.height}}}function po(e){return uo(e,Qn)}function uo(e,t){const{anchor:n,positionMethod:o="absolute",side:i="bottom",sideOffset:s=0,align:r="center",alignOffset:c=0,collisionBoundary:l,collisionPadding:f=5,sticky:u=!1,arrowPadding:g=5,disableAnchorTracking:d=!1,inline:a,keepMounted:m=!1,floatingRootContext:h,mounted:p,collisionAvoidance:w,shift:x,nodeId:R,adaptiveOrigin:y,lazyFlip:A=!1,externalTree:v}=e,[P,S]=b.useState(null);!p&&P!==null&&S(null);const L=w.side||"flip",M=w.align||"flip",E=w.fallbackAxisSide||"end",$=x?.crossAxis??!1,W=x?.rootBoundary,k=typeof n=="function"?n:void 0,V=Jt(k),T=k?V:n,F=Ee(n),O=Ee(p),B=to()==="rtl",we=P||{top:"top",right:"right",bottom:"bottom",left:"left","inline-end":B?"left":"right","inline-start":B?"right":"left"}[i],Ht=r==="center"?we:`${we}-${r}`;let D=f;typeof D=="number"?D={top:D,right:D,bottom:D,left:D}:D&&(D={top:D.top||0,right:D.right||0,bottom:D.bottom||0,left:D.left||0});const J=1,_t=i==="bottom"?J:0,It=i==="top"?J:0,zt=i==="right"?J:0,Nt=i==="left"?J:0,ye={boundary:l==="clipping-ancestors"?"clippingAncestors":l,padding:D},ie=b.useRef(null),We=Ee(s),Ve=Ee(c),Xt=typeof s!="function"?s:0,Yt=typeof c!="function"?c:0,re=[];a&&re.push(a),re.push(Un(C=>{const I=Ot(C,i,B),N=typeof We.current=="function"?We.current(I):We.current,_=typeof Ve.current=="function"?Ve.current(I):Ve.current;return{mainAxis:N,crossAxis:_,alignmentAxis:_}},[Xt,Yt,B,i]));const Je=M==="none"&&L!=="shift",Qe=!Je&&(u||$||L==="shift"),Ze=L==="none"?null:Gn({...ye,padding:{top:D.top+J+_t,right:D.right+J+Nt,bottom:D.bottom+J+It,left:D.left+J+zt},mainAxis:!$&&L==="flip",crossAxis:M==="flip"?"alignment":!1,fallbackAxisSideDirection:E}),et=Je?null:qn({...ye,rootBoundary:W,mainAxis:M!=="none",crossAxis:Qe,limiter:u||$?void 0:Kn(C=>{if(!ie.current)return{};const{width:I,height:N}=ie.current.getBoundingClientRect(),_=X(Y(C.placement)),Z=_==="y"?I:N,j=_==="y"?D.left+D.right:D.top+D.bottom;return{offset:Z/2+j/2}})},[ye,u,$,W,D,M]);L==="shift"||M==="shift"||r==="center"?re.push(et,Ze):re.push(Ze,et),re.push(Jn({...ye,apply({elements:{floating:C},availableWidth:I,availableHeight:N,rects:_}){if(!O.current)return;const Z=C.style;Z.setProperty(Rt,`${I}px`),Z.setProperty(At,`${N}px`);const j=U(C).devicePixelRatio||1,{x:Ae,y:ae,width:Oe,height:ee}=_.reference,he=(Math.round((Ae+Oe)*j)-Math.round(Ae*j))/j,pe=(Math.round((ae+ee)*j)-Math.round(ae*j))/j;Z.setProperty(lo,`${he}px`),Z.setProperty(fo,`${pe}px`)}}),oo(C=>({element:ie.current||Qt(C.elements.floating).createElement("div"),padding:ie.current?g:0,offsetParent:"floating"}),[g]),{name:"transformOrigin",fn(C){const{elements:{floating:I},middlewareData:N,placement:_,platform:Z,rects:j,y:Ae}=C,ae=Y(_),Oe=G(_),ee=X(ae)==="y",he=ie.current,pe=typeof s=="function"?s(Ot(C,i,B)):s;let Se;if(!he&&Oe&&Math.abs(ee?N.shift?.x||0:N.shift?.y||0)<=1)Se=Oe==="start"===(ee&&Z.isRTL?.(I)===!0)?"100%":"0%";else{const jt=ee?N.arrow?.x||0:N.arrow?.y||0,Ut=ee?he?.clientWidth||0:he?.clientHeight||0;Se=`${jt+Ut/2}px`}let He=ae==="top"||ae==="left"?`calc(100% + ${pe}px)`:`${-pe}px`;return Qe&&ee&&Math.abs(N.shift?.y||0)>pe&&(He=`${j.reference.y+j.reference.height/2-Ae}px`),I.style.setProperty(ao,ee?`${Se} ${He}`:`${He} ${Se}`),{}}},io,y),xe(()=>{!p&&h&&h.update({referenceElement:null,floatingElement:null,domReferenceElement:null,positionReference:null})},[p,h]);const Be=b.useMemo(()=>({ancestorScroll:!d,elementResize:!d&&typeof ResizeObserver<"u",layoutShift:!d&&typeof IntersectionObserver<"u"}),[d]),{refs:ce,elements:ge,x:tt,y:nt,middlewareData:le,update:be,placement:ot,context:it,isPositioned:Q,floatingStyles:st}=t({rootContext:h,open:m?p:void 0,placement:Ht,middleware:re,strategy:o,whileElementsMounted:m?void 0:(...C)=>bt(...C,Be),nodeId:R,externalTree:v}),{sideX:rt,sideY:ct}=le.adaptiveOrigin||so,ve=Q?o:"fixed",lt=b.useMemo(()=>{let C;return Q?y?C={position:ve,[rt]:tt,[ct]:nt}:C={...st,position:ve}:C={position:ve,top:0,left:0},C[Rt]="100vw",C[At]="100vh",Q||(C.opacity=0),C},[y,ve,rt,tt,ct,nt,st,Q]),Re=b.useRef(null);xe(()=>{if(!p)return;const C=F.current,I=typeof C=="function"?C():C,_=(St(I)?I.current:I)||null||null;_!==Re.current&&(ce.setPositionReference(_),Re.current=_)},[p,ce,T,F]),b.useEffect(()=>{if(!p)return;const C=F.current;typeof C!="function"&&St(C)&&C.current!==Re.current&&(ce.setPositionReference(C.current),Re.current=C.current)},[p,ce,T,F]),b.useEffect(()=>{if(m&&p&&ge.reference&&ge.floating)return bt(ge.reference,ge.floating,be,Be)},[m,p,ge,be,Be]);const fe=Y(ot),ft=Bt(i,fe,B),at=G(ot)||"center",ut=!!le.hide?.referenceHidden;xe(()=>{A&&p&&Q&&fe!==we&&S(fe)},[A,p,Q,fe,we]);const dt=b.useMemo(()=>({position:"absolute",top:le.arrow?.y,left:le.arrow?.x}),[le.arrow]),mt=le.arrow?.centerOffset!==0;return b.useMemo(()=>({positionerStyles:lt,arrowStyles:dt,arrowRef:ie,arrowUncentered:mt,side:ft,align:at,physicalSide:fe,anchorHidden:ut,refs:ce,context:it,isPositioned:Q,update:be}),[lt,dt,ie,mt,ft,at,fe,ut,ce,it,Q,be])}function St(e){return e!=null&&"current"in e}function mo(e){return e==="starting"?Zt:en}function xo(e,t,{styles:n,transitionStatus:o,props:i,refs:s,hidden:r,inert:c=!1}){const l={...n};return c&&(l.pointerEvents="none"),tn("div",e,{state:t,ref:s,props:[{role:"presentation",hidden:r,style:l},mo(o),i],stateAttributesMapping:on})}export{xo as a,to as b,mo as g,Wn as p,Te as r,po as u};
@@ -1 +1 @@
1
- import{r as e,T as r,k as n,l as s,m as a,n as T}from"./__vite-browser-external-DUJeOWgd.js";const m=Object.freeze({mode:s.COMPACT,setMode:()=>{},grouping:n.THOUSAND,setGrouping:()=>{},formatTokens:(o,t={})=>T(o,t),formatTokensTooltip:(o,t={})=>a(o,t)});function O(){return e.useContext(r)??m}export{O as u};
1
+ import{r as e,T as r,k as n,l as s,m as a,n as T}from"./__vite-browser-external-2g_4s3ot.js";const m=Object.freeze({mode:s.COMPACT,setMode:()=>{},grouping:n.THOUSAND,setGrouping:()=>{},formatTokens:(o,t={})=>T(o,t),formatTokensTooltip:(o,t={})=>a(o,t)});function O(){return e.useContext(r)??m}export{O as u};
@@ -0,0 +1 @@
1
+ import{o}from"./__vite-browser-external-2g_4s3ot.js";const a={name:"zap",size:24,node:[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]]};a.node;const n=o(a);export{n as Z};
@@ -122,7 +122,7 @@
122
122
  "price": "0",
123
123
  "priceCurrency": "USD"
124
124
  },
125
- "description": "Local-first AI coding usage tracker for 43 tools, with a desktop pet, four widgets, achievements, native macOS and Windows apps, accurate cross-provider deduplication, and no prompt collection."
125
+ "description": "Local-first AI coding usage tracker for 44 tools, with a desktop pet, four widgets, achievements, native macOS and Windows apps, accurate cross-provider deduplication, and no prompt collection."
126
126
  },
127
127
  {
128
128
  "@type": "WebSite",
@@ -205,7 +205,8 @@
205
205
  { "@type": "ListItem", "position": 40, "name": "Cline" },
206
206
  { "@type": "ListItem", "position": 41, "name": "MiniMax Code" },
207
207
  { "@type": "ListItem", "position": 42, "name": "Command Code" },
208
- { "@type": "ListItem", "position": 43, "name": "TRAE" }
208
+ { "@type": "ListItem", "position": 43, "name": "TRAE" },
209
+ { "@type": "ListItem", "position": 44, "name": "WorkBuddy AI" }
209
210
  ]
210
211
  },
211
212
  {
@@ -224,7 +225,7 @@
224
225
  "name": "Which AI coding CLIs does Token Tracker support?",
225
226
  "acceptedAnswer": {
226
227
  "@type": "Answer",
227
- "text": "Token Tracker supports 43 AI coding tools, including Claude Code, Codex CLI, AStudio, Cursor, Gemini CLI, Antigravity, Kiro, OpenCode, OpenClaw, Every Code, Hermes Agent, GitHub Copilot, Kimi Code, CodeBuddy, WorkBuddy, Grok Build, oh-my-pi, OmO, pi, Dots, Prime Agent, Craft Agents, Reasonix, Kilo CLI, Kilo Code, Roo Code, Zed Agent, Goose, Droid, Mimo Code, ZCode, Qoder, AnythingLLM Desktop, Claude Science, DeepSeek Harness, TRAE Work CN, LM Studio, Unsloth Studio, Devin CLI, Cline, MiniMax Code, Command Code, and TRAE."
228
+ "text": "Token Tracker supports 44 AI coding tools, including Claude Code, Codex CLI, AStudio, Cursor, Gemini CLI, Antigravity, Kiro, OpenCode, OpenClaw, Every Code, Hermes Agent, GitHub Copilot, Kimi Code, CodeBuddy, WorkBuddy, WorkBuddy AI, Grok Build, oh-my-pi, OmO, pi, Dots, Prime Agent, Craft Agents, Reasonix, Kilo CLI, Kilo Code, Roo Code, Zed Agent, Goose, Droid, Mimo Code, ZCode, Qoder, AnythingLLM Desktop, Claude Science, DeepSeek Harness, TRAE Work CN, LM Studio, Unsloth Studio, Devin CLI, Cline, MiniMax Code, Command Code, and TRAE."
228
229
  }
229
230
  },
230
231
  {
@@ -256,7 +257,7 @@
256
257
  "name": "How do I monitor AI token usage and cost across tools?",
257
258
  "acceptedAnswer": {
258
259
  "@type": "Answer",
259
- "text": "Install Token Tracker with npx tokentracker-cli. It is an AI token usage and cost tracker that monitors token consumption and spend across all 43 supported tools in one dashboard, with per-model pricing across 2,200+ models so you can see cost by model, project, and time window without manual tracking."
260
+ "text": "Install Token Tracker with npx tokentracker-cli. It is an AI token usage and cost tracker that monitors token consumption and spend across all 44 supported tools in one dashboard, with per-model pricing across 2,200+ models so you can see cost by model, project, and time window without manual tracking."
260
261
  }
261
262
  },
262
263
  {
@@ -272,15 +273,15 @@
272
273
  ]
273
274
  }
274
275
  </script>
275
- <script type="module" crossorigin src="/assets/__vite-browser-external-DUJeOWgd.js"></script>
276
- <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-DFRX9dp-.css">
276
+ <script type="module" crossorigin src="/assets/__vite-browser-external-2g_4s3ot.js"></script>
277
+ <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-LpFw4zXh.css">
277
278
  </head>
278
279
  <body>
279
280
  <main class="aeo-seed-content" aria-label="Token Tracker AI-readable summary">
280
281
  <h1>Token Tracker: monitor AI token usage and cost with a local dashboard and desktop companion</h1>
281
282
  <p>
282
283
  Token Tracker is a free, open-source, local-first dashboard that automatically tracks and monitors token usage
283
- and cost across 43 AI coding tools — including Claude Code, OpenAI Codex, AStudio, Cursor, Gemini CLI, LM Studio, and Unsloth Studio. A desktop pet
284
+ and cost across 44 AI coding tools — including Claude Code, OpenAI Codex, AStudio, Cursor, Gemini CLI, LM Studio, and Unsloth Studio. A desktop pet
284
285
  reacts to real token activity, four desktop widgets
285
286
  keep usage visible, and achievements turn coding history into progress. Native macOS and Windows apps
286
287
  sit on top of accurate cross-provider deduplication. Token counts only — never prompts or conversations.
@@ -305,7 +306,7 @@
305
306
  <li><strong>Desktop pet</strong> — a pixel companion that reacts to real token burn, streaks, and rest.</li>
306
307
  <li><strong>Four desktop widgets</strong> — usage, activity heatmap, top models, and limits at a glance.</li>
307
308
  <li><strong>Achievements</strong> — unlock milestones from local and optional account-wide activity.</li>
308
- <li><strong>Unified usage dashboard</strong> — input, output, cached, and cache-creation tokens across 43 AI coding tools.</li>
309
+ <li><strong>Unified usage dashboard</strong> — input, output, cached, and cache-creation tokens across 44 AI coding tools.</li>
309
310
  <li><strong>Cost analysis</strong> — per-model pricing across 2,200+ models with an offline snapshot.</li>
310
311
  <li><strong>Usage limits view</strong> — live quota and subscription status for 17 providers, with last-good caching for local providers such as Antigravity and Qoder.</li>
311
312
  <li><strong>Service Status page</strong> — live operational and incident status from eight official provider status pages.</li>
@@ -316,11 +317,11 @@
316
317
  </ul>
317
318
  <p><em>Privacy by design</em>: token counts only, never prompts or conversation content. Local-first; cloud sync is optional and powers only the public leaderboard.</p>
318
319
 
319
- <h2>Supported AI coding tools (43)</h2>
320
+ <h2>Supported AI coding tools (44)</h2>
320
321
  <p>
321
322
  Use Token Tracker as a Claude Code token tracker, Codex token tracker, Cursor token tracker,
322
323
  Gemini token tracker, OpenCode token tracker, GitHub Copilot token tracker, or DeepSeek Harness token tracker — one dashboard
323
- covers all 43 tools below.
324
+ covers all 44 tools below.
324
325
  </p>
325
326
  <ul>
326
327
  <li><strong>Claude Code</strong> — Anthropic's official coding agent CLI; integrated via SessionEnd hook.</li>
@@ -338,6 +339,7 @@
338
339
  <li><strong>Kimi Code</strong> — passive <code>wire.jsonl</code> reader.</li>
339
340
  <li><strong>CodeBuddy (Tencent)</strong> — Claude-Code fork; SessionEnd hook in <code>~/.codebuddy/settings.json</code>.</li>
340
341
  <li><strong>WorkBuddy (Tencent)</strong> — SessionEnd hook and passive session reader.</li>
342
+ <li><strong>WorkBuddy AI</strong> — International WorkBuddy build with separate session tracking.</li>
341
343
  <li><strong>Grok Build</strong> — hook and passive cumulative usage reader.</li>
342
344
  <li><strong>oh-my-pi</strong> — passive JSONL session reader.</li>
343
345
  <li><strong>OmO</strong> — passive JSONL session reader, including nested subagent transcripts.</li>
@@ -396,7 +398,7 @@
396
398
  <p>Run <code>npx tokentracker-cli</code>. The CLI auto-detects your AI coding tools, installs hooks, and opens the dashboard.</p>
397
399
 
398
400
  <h3>Which AI coding tools does Token Tracker support?</h3>
399
- <p>Token Tracker supports 43 tools: Claude Code, Codex CLI, AStudio, Cursor, Gemini CLI, Antigravity, Kiro, OpenCode, OpenClaw, Every Code, Hermes Agent, GitHub Copilot, Kimi Code, CodeBuddy, WorkBuddy, Grok Build, oh-my-pi, OmO, pi, Dots, Prime Agent, Craft Agents, Reasonix, Kilo CLI, Kilo Code, Roo Code, Zed Agent, Goose, Droid, Mimo Code, ZCode, Qoder, AnythingLLM Desktop, Claude Science, DeepSeek Harness, TRAE Work CN, LM Studio, Unsloth Studio, Devin CLI, Cline, MiniMax Code, Command Code, and TRAE.</p>
401
+ <p>Token Tracker supports 44 tools: Claude Code, Codex CLI, AStudio, Cursor, Gemini CLI, Antigravity, Kiro, OpenCode, OpenClaw, Every Code, Hermes Agent, GitHub Copilot, Kimi Code, CodeBuddy, WorkBuddy, WorkBuddy AI, Grok Build, oh-my-pi, OmO, pi, Dots, Prime Agent, Craft Agents, Reasonix, Kilo CLI, Kilo Code, Roo Code, Zed Agent, Goose, Droid, Mimo Code, ZCode, Qoder, AnythingLLM Desktop, Claude Science, DeepSeek Harness, TRAE Work CN, LM Studio, Unsloth Studio, Devin CLI, Cline, MiniMax Code, Command Code, and TRAE.</p>
400
402
 
401
403
  <h3>Is Token Tracker free and open source?</h3>
402
404
  <p>Yes. Source on GitHub at <a href="https://github.com/xiufengsun/TokenTracker">github.com/xiufengsun/TokenTracker</a>; npm package <code>tokentracker-cli</code>.</p>
@@ -408,7 +410,7 @@
408
410
  <p>Input, output, cached, and cache-creation tokens per model, project, and time window. It also surfaces usage limits for 17 providers, including Claude, Codex, Cursor, Gemini, Antigravity, Qoder, Qoder CN, Command Code, and Devin.</p>
409
411
 
410
412
  <h3>How do I monitor AI token usage and cost across tools?</h3>
411
- <p>Token Tracker is an AI token usage and cost tracker: install it with <code>npx tokentracker-cli</code>, and it monitors token consumption and spend across all 43 tools in one dashboard, with per-model pricing across 2,200+ models so you can see cost by model, project, and time window without manual tracking.</p>
413
+ <p>Token Tracker is an AI token usage and cost tracker: install it with <code>npx tokentracker-cli</code>, and it monitors token consumption and spend across all 44 tools in one dashboard, with per-model pricing across 2,200+ models so you can see cost by model, project, and time window without manual tracking.</p>
412
414
 
413
415
  <h3>Does Token Tracker work offline?</h3>
414
416
  <p>Yes. Token Tracker is local-first. All parsing, aggregation, and dashboard rendering happen on your machine. Cloud sync is optional and powers only the public leaderboard.</p>
@@ -164,8 +164,8 @@
164
164
  ]
165
165
  }
166
166
  </script>
167
- <script type="module" crossorigin src="/assets/__vite-browser-external-DUJeOWgd.js"></script>
168
- <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-DFRX9dp-.css">
167
+ <script type="module" crossorigin src="/assets/__vite-browser-external-2g_4s3ot.js"></script>
168
+ <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-LpFw4zXh.css">
169
169
  </head>
170
170
  <body>
171
171
  <main class="aeo-seed-content" aria-label="Claude IP Check AI-readable summary">
@@ -135,8 +135,8 @@
135
135
  ]
136
136
  }
137
137
  </script>
138
- <script type="module" crossorigin src="/assets/__vite-browser-external-DUJeOWgd.js"></script>
139
- <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-DFRX9dp-.css">
138
+ <script type="module" crossorigin src="/assets/__vite-browser-external-2g_4s3ot.js"></script>
139
+ <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-LpFw4zXh.css">
140
140
  </head>
141
141
  <body>
142
142
  <main class="aeo-seed-content" aria-label="AI Coding Token Usage Leaderboard AI-readable summary">
@@ -1,7 +1,7 @@
1
1
  # Token Tracker LLMs Index
2
2
 
3
3
  Token Tracker is a free, open-source, local-first AI coding usage and cost
4
- tracker for 43 tools. Its distinctive desktop experience includes a pixel pet
4
+ tracker for 44 tools. Its distinctive desktop experience includes a pixel pet
5
5
  powered by real token activity, four desktop widgets, and achievements. The
6
6
  same data powers a cross-platform CLI, a native macOS menu bar app, a native
7
7
  Windows system tray app, and a dashboard. It records token counts and
@@ -23,7 +23,7 @@ timestamps, never prompts, responses, or source code.
23
23
  - [npm package](https://www.npmjs.com/package/tokentracker-cli)
24
24
  - [Latest release](https://github.com/xiufengsun/TokenTracker/releases/latest)
25
25
 
26
- ## Supported AI coding tools (43)
26
+ ## Supported AI coding tools (44)
27
27
  - Claude Code
28
28
  - Codex CLI
29
29
  - AStudio
@@ -75,8 +75,8 @@
75
75
  "description": "Shareable Token Tracker dashboard snapshot."
76
76
  }
77
77
  </script>
78
- <script type="module" crossorigin src="/assets/__vite-browser-external-DUJeOWgd.js"></script>
79
- <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-DFRX9dp-.css">
78
+ <script type="module" crossorigin src="/assets/__vite-browser-external-2g_4s3ot.js"></script>
79
+ <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-LpFw4zXh.css">
80
80
  </head>
81
81
  <body>
82
82
  <main class="aeo-seed-content" aria-label="Token Tracker share page summary">
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tokentracker-cli",
3
- "version": "1.3.3",
4
- "description": "Local-first AI coding token usage and cost tracker for 43 tools, with a dashboard, desktop pet, widgets, achievements, and native macOS/Windows apps.",
3
+ "version": "1.3.5",
4
+ "description": "Local-first AI coding token usage and cost tracker for 44 tools, with a dashboard, desktop pet, widgets, achievements, and native macOS/Windows apps.",
5
5
  "main": "src/cli.js",
6
6
  "bin": {
7
7
  "tokentracker-cli": "bin/tracker.js",
@@ -14,6 +14,7 @@
14
14
  "src/",
15
15
  "dashboard/dist/",
16
16
  "LICENSE",
17
+ "THIRD_PARTY_NOTICES.md",
17
18
  "README.md"
18
19
  ],
19
20
  "type": "commonjs",