tokentracker-cli 1.2.1 → 1.3.3

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 (161) hide show
  1. package/README.md +2 -0
  2. package/README.zh-CN.md +2 -0
  3. package/dashboard/dist/assets/AchievementBadge-BaqdyZaV.js +1 -0
  4. package/dashboard/dist/assets/AchievementsPage-B4Ju0guv.js +2 -0
  5. package/dashboard/dist/assets/{AchievementsSection-DoYMz2Rr.js → AchievementsSection-CDUUEfIi.js} +1 -1
  6. package/dashboard/dist/assets/BadgeDetailModal-B-XMJAvL.js +1 -0
  7. package/dashboard/dist/assets/{BotAnimated-C21PdYSf.js → BotAnimated-Dx_vvTtC.js} +1 -1
  8. package/dashboard/dist/assets/Card-D-5mABVt.js +1 -0
  9. package/dashboard/dist/assets/CloudCheckoutPage-BELoh56h.js +1 -0
  10. package/dashboard/dist/assets/CloudPage-CfBruNxe.js +1 -0
  11. package/dashboard/dist/assets/CloudUsageExport-BoFU7xCT.js +4 -0
  12. package/dashboard/dist/assets/CommandPalette-BmmKZWn-.js +1 -0
  13. package/dashboard/dist/assets/CommunityStatsModal-BF77zVhN.js +1 -0
  14. package/dashboard/dist/assets/{ConfirmModal-zUljpLNe.js → ConfirmModal-BQ-xB1S_.js} +1 -1
  15. package/dashboard/dist/assets/Controls-BnTeX7T4.js +1 -0
  16. package/dashboard/dist/assets/DashboardPage-BWulHa5J.js +1 -0
  17. package/dashboard/dist/assets/{DevicePage-CCIyAYH3.js → DevicePage-Dg6XkIaY.js} +1 -1
  18. package/dashboard/dist/assets/DialogClose-DAyilsH-.js +1 -0
  19. package/dashboard/dist/assets/DialogDescription-j4XnRy6y.js +1 -0
  20. package/dashboard/dist/assets/{DialogTitle-6q0jyME6.js → DialogTitle-B1iNGD2S.js} +1 -1
  21. package/dashboard/dist/assets/{FadeIn-BUm1z22V.js → FadeIn-ChVf45WW.js} +1 -1
  22. package/dashboard/dist/assets/{HeaderGithubStar-CxdmloMy.js → HeaderGithubStar-B740_G7a.js} +1 -1
  23. package/dashboard/dist/assets/{HoverTooltip-CrMdGYZj.js → HoverTooltip-BzP5FudR.js} +1 -1
  24. package/dashboard/dist/assets/{IpCheckPage-w6UUK_1K.js → IpCheckPage-BuZH3F14.js} +1 -1
  25. package/dashboard/dist/assets/LandingPage-Dtgq_caz.js +2 -0
  26. package/dashboard/dist/assets/LeaderboardPage-Di1kEg2O.js +2 -0
  27. package/dashboard/dist/assets/LeaderboardProBadge-h8FfR0au.js +1 -0
  28. package/dashboard/dist/assets/LeaderboardProfileModal-OUZvO6u-.js +73 -0
  29. package/dashboard/dist/assets/{LeaderboardProfilePage-Fljho5RP.js → LeaderboardProfilePage-bHI1oTEK.js} +2 -2
  30. package/dashboard/dist/assets/{LimitsPage-Do_uJqdQ.js → LimitsPage-DKojB73_.js} +2 -2
  31. package/dashboard/dist/assets/{LocalOnlyNotice-RIj2XT_X.js → LocalOnlyNotice-BaEq6qN7.js} +1 -1
  32. package/dashboard/dist/assets/LoginCard-Dn5Xy4If.js +1 -0
  33. package/dashboard/dist/assets/LoginModal-C5h-5GOA.js +1 -0
  34. package/dashboard/dist/assets/LoginPage-BpX8Tgjj.js +1 -0
  35. package/dashboard/dist/assets/PetPage-BPBsUHyL.js +1 -0
  36. package/dashboard/dist/assets/PopoverPopup-CVTiEVHs.js +1 -0
  37. package/dashboard/dist/assets/{ProviderIcon-BSI-1Cy8.js → ProviderIcon-BshO2uER.js} +1 -1
  38. package/dashboard/dist/assets/ResetPasswordPage-RTFTD8Dr.js +1 -0
  39. package/dashboard/dist/assets/{Select-B6CM0ico.js → Select-CtTceC4T.js} +1 -1
  40. package/dashboard/dist/assets/SelectItemText-C7xi8iGp.js +1 -0
  41. package/dashboard/dist/assets/SelfHostPage-BlwTt8XM.js +1 -0
  42. package/dashboard/dist/assets/{ServiceStatusPage-B4lIs2fc.js → ServiceStatusPage-BkIcJpYK.js} +1 -1
  43. package/dashboard/dist/assets/SessionsPage-okHobk_L.js +3 -0
  44. package/dashboard/dist/assets/SettingsPage-C-cc6wcF.js +2 -0
  45. package/dashboard/dist/assets/SkillsPage-D2LlKKJN.js +1 -0
  46. package/dashboard/dist/assets/{TokenGalaxy-Bk3kGSGi.js → TokenGalaxy-DiXUpXKF.js} +2 -2
  47. package/dashboard/dist/assets/TrendMonitor-C88S-5aa.js +19 -0
  48. package/dashboard/dist/assets/WidgetsPage-WsEFPNwp.js +1 -0
  49. package/dashboard/dist/assets/{WrappedPage-DHRmP4Ey.js → WrappedPage-ClEo-RmR.js} +1 -1
  50. package/dashboard/dist/assets/__vite-browser-external-DFRX9dp-.css +1 -0
  51. package/dashboard/dist/assets/__vite-browser-external-DUJeOWgd.js +45 -0
  52. package/dashboard/dist/assets/agent-logos-BM9jlReI.js +1 -0
  53. package/dashboard/dist/assets/arrow-left-BEM-HVmC.js +1 -0
  54. package/dashboard/dist/assets/arrow-right-CwBz5dwb.js +1 -0
  55. package/dashboard/dist/assets/{arrow-up-right-c39fdiDQ.js → arrow-up-right-jPmRN562.js} +1 -1
  56. package/dashboard/dist/assets/{check-8LQ7IvkH.js → check-CKwHc4Hv.js} +1 -1
  57. package/dashboard/dist/assets/cloud-checkout-nYNHDFoR.js +1 -0
  58. package/dashboard/dist/assets/composite-B4Z3F65o.js +1 -0
  59. package/dashboard/dist/assets/{download-x3Gmv-wu.js → download-CJUnX1Bs.js} +1 -1
  60. package/dashboard/dist/assets/{external-link-daw-XTjZ.js → external-link-B5yXxdPy.js} +1 -1
  61. package/dashboard/dist/assets/{flame-B9o0_EF8.js → flame-CKjAluj_.js} +1 -1
  62. package/dashboard/dist/assets/{format-tokens-o9atQGtV.js → format-tokens-mk49THtv.js} +1 -1
  63. package/dashboard/dist/assets/{host-mode-GPY2DxE4.js → host-mode-efKlSYjX.js} +1 -1
  64. package/dashboard/dist/assets/{icons-CmM2z-Jt.js → icons-ZB1ZthjH.js} +1 -1
  65. package/dashboard/dist/assets/{index-CPcJP0uH.js → index-BImBG3eS.js} +1 -1
  66. package/dashboard/dist/assets/{index-CtQOew7C.js → index-BgdM7kBl.js} +1 -1
  67. package/dashboard/dist/assets/{index-Bfgblk6o.js → index-DweUMAUD.js} +1 -1
  68. package/dashboard/dist/assets/{info-BaK8Hoi2.js → info-CyDY7NYM.js} +1 -1
  69. package/dashboard/dist/assets/{link-2-CV3uvMH3.js → link-2-Dn2soiyd.js} +1 -1
  70. package/dashboard/dist/assets/{loader-circle-DYpa-xTZ.js → loader-circle-CNT630zn.js} +1 -1
  71. package/dashboard/dist/assets/{modifiers.esm-Ds4Uh7JO.js → modifiers.esm-WPx0bc2K.js} +1 -1
  72. package/dashboard/dist/assets/{monitor-smartphone-BbeYHvY-.js → monitor-smartphone-C-qC0RAt.js} +1 -1
  73. package/dashboard/dist/assets/os-DMmhX9tk.js +1 -0
  74. package/dashboard/dist/assets/{plus-C9qGVLFv.js → plus-Cx82jb7o.js} +1 -1
  75. package/dashboard/dist/assets/{provider-display-BWYNyitK.js → provider-display-CodMmiRb.js} +2 -2
  76. package/dashboard/dist/assets/{react-CO1HovF5.js → react-B7SkZTgg.js} +1 -1
  77. package/dashboard/dist/assets/safePolygon-CKpREa4K.js +1 -0
  78. package/dashboard/dist/assets/{search-DBnhkzG_.js → search-Ol3OZBm4.js} +1 -1
  79. package/dashboard/dist/assets/server-DFCbznC7.js +1 -0
  80. package/dashboard/dist/assets/shield-check-YcmLwVZ6.js +1 -0
  81. package/dashboard/dist/assets/skills-api-C-9vK884.js +1 -0
  82. package/dashboard/dist/assets/{sortable.esm-SVl6OixH.js → sortable.esm-CKC9NuR-.js} +1 -1
  83. package/dashboard/dist/assets/store-C9yWYHfg.js +1 -0
  84. package/dashboard/dist/assets/{terminal-kUMdPZhq.js → terminal-B3_fCLFs.js} +1 -1
  85. package/dashboard/dist/assets/{trash-Dd_vbrYo.js → trash-CZGfgbFa.js} +1 -1
  86. package/dashboard/dist/assets/{use-community-stats-Bmlmv4H-.js → use-community-stats-CW-qkYn7.js} +1 -1
  87. package/dashboard/dist/assets/{use-latest-request-guard-CqZwzrCW.js → use-latest-request-guard-DHv7vfFE.js} +1 -1
  88. package/dashboard/dist/assets/{use-limits-display-prefs-CDC0MZRY.js → use-limits-display-prefs-NZ-AAYD5.js} +1 -1
  89. package/dashboard/dist/assets/use-native-settings-CWiLqfZh.js +1 -0
  90. package/dashboard/dist/assets/{use-ordered-list-DvBI7mUU.js → use-ordered-list-Df8pw-WJ.js} +1 -1
  91. package/dashboard/dist/assets/use-pet-settings-Bg2CDprr.js +2 -0
  92. package/dashboard/dist/assets/use-reduced-motion-iDZEUyua.js +1 -0
  93. package/dashboard/dist/assets/{use-transform-uSKYTYaW.js → use-transform-BHwEAfmO.js} +1 -1
  94. package/dashboard/dist/assets/use-usage-limits-CSxFFn3_.js +1 -0
  95. package/dashboard/dist/assets/{useCurrency-t1iy_pC3.js → useCurrency-pwClnCZ5.js} +1 -1
  96. package/dashboard/dist/assets/usePositioner-B0j1orGj.js +1 -0
  97. package/dashboard/dist/assets/useTokenFormat-BMvVAe6V.js +1 -0
  98. package/dashboard/dist/assets/{zap-DFM6AsYo.js → zap-DvX2aYx5.js} +1 -1
  99. package/dashboard/dist/index.html +2 -2
  100. package/dashboard/dist/ip-check.html +2 -2
  101. package/dashboard/dist/leaderboard.html +2 -2
  102. package/dashboard/dist/pricing.html +6 -5
  103. package/dashboard/dist/privacy.html +3 -3
  104. package/dashboard/dist/share.html +2 -2
  105. package/dashboard/dist/terms.html +6 -6
  106. package/package.json +6 -2
  107. package/src/commands/device-login.js +60 -33
  108. package/src/commands/init.js +26 -7
  109. package/src/commands/serve.js +3 -3
  110. package/src/commands/sync.js +43 -22
  111. package/src/lib/atomic-json.js +27 -0
  112. package/src/lib/bearer-token.js +11 -0
  113. package/src/lib/cloud-account.js +4 -1
  114. package/src/lib/local-api.js +282 -69
  115. package/src/lib/openclaw-cli.js +104 -0
  116. package/src/lib/openclaw-hook.js +1 -46
  117. package/src/lib/openclaw-session-plugin.js +1 -59
  118. package/src/lib/pricing/seed-snapshot.json +1 -1
  119. package/src/lib/proxy-env.js +8 -3
  120. package/src/lib/rollout.js +15 -10
  121. package/src/lib/runtime-config.js +84 -14
  122. package/src/lib/skills-manager.js +8 -1
  123. package/src/lib/static-server.js +19 -4
  124. package/src/lib/upload-throttle.js +18 -4
  125. package/dashboard/dist/assets/AchievementBadge-DPlXNqoK.js +0 -1
  126. package/dashboard/dist/assets/AchievementsPage-B49wjdK_.js +0 -2
  127. package/dashboard/dist/assets/BadgeDetailModal-DUCS6K1n.js +0 -1
  128. package/dashboard/dist/assets/Card-BU2CqxfU.js +0 -1
  129. package/dashboard/dist/assets/CommandPalette-O3pOLyJo.js +0 -1
  130. package/dashboard/dist/assets/CommunityStatsModal-Bt82neQ7.js +0 -1
  131. package/dashboard/dist/assets/Controls-D56v-YJw.js +0 -1
  132. package/dashboard/dist/assets/DashboardPage-CKEuFzuc.js +0 -1
  133. package/dashboard/dist/assets/DialogClose-C-QK97qp.js +0 -1
  134. package/dashboard/dist/assets/DialogDescription-COXweCuc.js +0 -1
  135. package/dashboard/dist/assets/LandingPage-DLDE7wdR.js +0 -2
  136. package/dashboard/dist/assets/LeaderboardAvatar-BqD4dEvQ.js +0 -1
  137. package/dashboard/dist/assets/LeaderboardPage-kgHSryiT.js +0 -2
  138. package/dashboard/dist/assets/LeaderboardProfileModal-zLdeOiA3.js +0 -73
  139. package/dashboard/dist/assets/LoginCard-Dx6MmGjU.js +0 -1
  140. package/dashboard/dist/assets/LoginModal-BWaZVRnT.js +0 -1
  141. package/dashboard/dist/assets/LoginPage-BNkU-riS.js +0 -1
  142. package/dashboard/dist/assets/PetPage-CyEgU2Vm.js +0 -1
  143. package/dashboard/dist/assets/PopoverPopup-CmUIY8lF.js +0 -1
  144. package/dashboard/dist/assets/ResetPasswordPage-CUXKkLb4.js +0 -1
  145. package/dashboard/dist/assets/SelectItemText-CZ7puxuB.js +0 -1
  146. package/dashboard/dist/assets/SessionsPage-D99UfBgy.js +0 -3
  147. package/dashboard/dist/assets/SettingsPage-DT3rld91.js +0 -2
  148. package/dashboard/dist/assets/SkillsPage-Dv47kVCB.js +0 -1
  149. package/dashboard/dist/assets/TrendMonitor-mB1x3c_o.js +0 -19
  150. package/dashboard/dist/assets/WidgetsPage-BhUArowe.js +0 -1
  151. package/dashboard/dist/assets/__vite-browser-external-BW1rxvYq.js +0 -45
  152. package/dashboard/dist/assets/__vite-browser-external-gKkiQad5.css +0 -1
  153. package/dashboard/dist/assets/agent-logos-D7f7AMF-.js +0 -1
  154. package/dashboard/dist/assets/composite-BgLSXWKA.js +0 -1
  155. package/dashboard/dist/assets/skills-api-BSkbxC8-.js +0 -1
  156. package/dashboard/dist/assets/store-DrEEdO_u.js +0 -1
  157. package/dashboard/dist/assets/use-pet-settings-C_FrqySO.js +0 -2
  158. package/dashboard/dist/assets/use-reduced-motion-BEOENqBa.js +0 -1
  159. package/dashboard/dist/assets/use-session-efficiency-pref-D8cAb4A9.js +0 -1
  160. package/dashboard/dist/assets/use-usage-limits-DFgOKTtv.js +0 -1
  161. package/dashboard/dist/assets/useTokenFormat-0bPjtaaM.js +0 -1
@@ -0,0 +1 @@
1
+ import{r as j,aD as we,aE as De,aF as Fe,aG as Le,aH as le,aI as He,aJ as te,aK as Te,aL as q,aM as ae,aN as ue,aO as Z,$ as ee,aP as z,aQ as ge,aR as Xe,aS as Ce,aT as N,an as Ye}from"./__vite-browser-external-DUJeOWgd.js";import{i as fe,a as Pe,b as Ne,g as de,c as ne}from"./composite-B4Z3F65o.js";function _e(e,s){return s!=null&&!fe(s)?0:typeof e=="function"?e():e}function me(e,s,r){const p=_e(e,r);return typeof p=="number"?p:p?.[s]}function Oe(e){return typeof e=="function"?e():e}function Se(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 be(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 $e(e,s={}){const{enabled:r=!0,closeDelay:p=0,nodeId:c}=s,o="rootStore"in e?e.rootStore:e,X=o.useState("open"),b=o.useState("floatingElement"),H=o.useState("domReferenceElement"),{dataRef:Y}=o.context,a=Pe(),M=Ne(),f=Me(o),U=He(),G=te(()=>Se(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)&&b){const _=H,F=b,t=ae(b),C=a?.nodesRef.current.find(O=>O.id===M)?.context?.elements.floating;C&&(C.style.pointerEvents="");const k=f.pointerEventsScopeElement!==F?f.pointerEventsScopeElement:null,E=C!==F?C:null,g=f.handleCloseOptions?.getScope?.()??k??E??_.closest("[data-rootownerid]")??t.body;return be(f,{scopeElement:g,referenceElement:_,floatingElement:F}),()=>{D()}}},[r,X,H,b,f,i,a,M,D]),j.useEffect(()=>{if(!r)return;function _(){return!!(a&&M&&de(a.nodesRef.current,M).length>0)}function F(O){const I=me(p,"close",f.pointerType),Q=()=>{o.setOpen(!1,ee(z,O)),a?.events.emit("floating.closed",O)};I?f.openChangeTimeout.start(I,Q):(f.openChangeTimeout.clear(),Q())}function t(O){const I=ge(O);if(!Xe(I)){f.interactedInside=!1;return}f.interactedInside=I?.closest("[aria-haspopup]")!=null}function C(){f.openChangeTimeout.clear(),U.clear(),a?.events.off("floating.closed",E),D()}function k(O){if(_()&&a){a.events.on("floating.closed",E);return}if(Ce(O.relatedTarget,o.context.triggerElements))return;const I=Y.current.floatingContext?.nodeId??c,Q=O.relatedTarget;if(!(a&&I&&q(Q)&&de(a.nodesRef.current,I,!1).some(B=>N(B.context?.elements.floating,Q)))){if(f.handler){f.handler(O);return}D(),i()&&!G()&&F(O)}}function E(O){!a||!M||_()||U.start(0,()=>{a.events.off("floating.closed",E),o.setOpen(!1,ee(z,O)),a.events.emit("floating.closed",O)})}const g=b;return ue(g&&Z(g,"mouseenter",C),g&&Z(g,"mouseleave",k),g&&Z(g,"pointerdown",t,!0),()=>{a?.events.off("floating.closed",E)})},[r,b,o,Y,p,c,i,G,D,f,a,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:b=!0,triggerElementRef:H=Ae,externalTree:Y,isActiveTrigger:a=!0,getHandleCloseContext:M,isClosing:f,shouldOpen:U,guardStaleOpen:G=!1}=s,i="rootStore"in e?e.rootStore:e,{dataRef:D,events:_}=i.context,F=Pe(Y),t=Me(i),C=j.useRef(!1),k=ne(c),E=ne(p),g=ne(X),O=ne(r),I=ne(U),Q=ne(f),x=te(()=>Se(D.current.openEvent?.type,t.interactedInside)),B=te(()=>I.current?.()!==!1),$=te((v,u,R)=>{const T=i.context.triggerElements;if(T.hasElement(u))return!v||!N(v,u);if(!q(R))return!1;const J=R;return T.hasMatchingElement(A=>N(A,J))&&(!v||!N(v,J))}),h=te(()=>{if(!t.handler)return;ae(i.select("domReferenceElement")).removeEventListener("mousemove",t.handler),t.handler=void 0}),n=te(()=>{ce(t)});return a&&(t.handleCloseOptions=c?.__options),j.useEffect(()=>h,[h]),j.useEffect(()=>{if(!r)return;function v(u){u.open?C.current=!1:(C.current=u.reason===z,h(),t.openChangeTimeout.clear(),t.restTimeout.clear(),t.blockMouseMove=!0,t.restTimeoutPending=!1)}return _.on("openchange",v),()=>{_.off("openchange",v)}},[r,_,t,h]),j.useEffect(()=>{if(!r)return;function v(d,V=!0){const P=me(E.current,"close",t.pointerType);P?t.openChangeTimeout.start(P,()=>{i.setOpen(!1,ee(z,d)),F?.events.emit("floating.closed",d)}):V&&(t.openChangeTimeout.clear(),i.setOpen(!1,ee(z,d)),F?.events.emit("floating.closed",d))}const u=H.current??(a?i.select("domReferenceElement"):null);if(!q(u))return;function R(d){if(t.openChangeTimeout.clear(),t.blockMouseMove=!1,o&&!fe(t.pointerType))return;const V=Oe(g.current),P=me(E.current,"open",t.pointerType),S=ge(d),l=d.currentTarget??null,w=i.select("domReferenceElement");let y=l;if(q(S)&&!i.context.triggerElements.hasElement(S)){for(const ve of i.context.triggerElements.elements())if(N(ve,S)){y=ve;break}}q(l)&&q(w)&&!i.context.triggerElements.hasElement(l)&&N(l,w)&&(y=w);const L=y==null?!1:$(w,y,S),W=i.select("open"),K=Q.current?.()??i.select("transitionStatus")==="ending",Ee=!W&&K&&C.current,Ie=!L&&q(y)&&q(w)&&N(w,y)&&Ee,ye=V>0&&!P,ke=L&&(W||Ee)||Ie,he=!W||L;if(ke){B()&&i.setOpen(!0,ee(z,d,y));return}ye||(P?t.openChangeTimeout.start(P,()=>{he&&B()&&i.setOpen(!0,ee(z,d,y))}):he&&B()&&i.setOpen(!0,ee(z,d,y)))}function T(d){if(x()){n();return}h();const V=i.select("domReferenceElement"),P=ae(V);t.restTimeout.clear(),t.restTimeoutPending=!1;const S=D.current.floatingContext??M?.();if(Ce(d.relatedTarget,i.context.triggerElements))return;if(k.current&&S){i.select("open")||t.openChangeTimeout.clear();const w=H.current;t.handler=k.current({...S,tree:F,x:d.clientX,y:d.clientY,onClose(){n(),h(),O.current&&!x()&&w===i.select("domReferenceElement")&&v(d,!0)}}),P.addEventListener("mousemove",t.handler),t.handler(d);return}(t.pointerType!=="touch"||!N(i.select("floatingElement"),d.relatedTarget))&&v(d)}function J(d){N(u,d.relatedTarget)||(t.openChangeTimeout.clear(),t.restTimeout.clear(),t.restTimeoutPending=!1)}const A=G?Z(u,"mouseout",J):void 0;return b?ue(Z(u,"mousemove",R,{once:!0}),Z(u,"mouseenter",R),Z(u,"mouseleave",T),A):ue(Z(u,"mouseenter",R),Z(u,"mouseleave",T),A)},[h,n,D,E,i,r,k,t,a,$,x,o,b,g,H,F,O,M,Q,B,G]),j.useMemo(()=>{if(!r)return;function v(u){t.pointerType=u.pointerType}return{onPointerDown:v,onPointerEnter:v,onMouseMove(u){const{nativeEvent:R}=u,T=u.currentTarget,J=i.select("domReferenceElement"),A=i.select("open"),d=$(J,T,u.target);if(o&&!fe(t.pointerType))return;if(A&&d&&t.handleCloseOptions?.blockPointerEvents){const S=i.select("floatingElement");if(S){const l=t.handleCloseOptions?.getScope?.()??T.ownerDocument.body;be(t,{scopeElement:l,referenceElement:T,floatingElement:S})}}const V=Oe(g.current);if(A&&!d||V===0||!d&&t.restTimeoutPending&&u.movementX**2+u.movementY**2<2)return;t.restTimeout.clear();function P(){if(t.restTimeoutPending=!1,x())return;const S=i.select("open");!t.blockMouseMove&&(!S||d)&&B()&&i.setOpen(!0,ee(z,R,T))}t.pointerType==="touch"?Ye.flushSync(()=>{P()}):d&&A?P():(t.restTimeoutPending=!0,t.restTimeout.start(V,P))}}},[r,t,x,$,o,i,g,B])}const Re=.1,Ve=Re*Re,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,b,H,Y){let a=!1;return oe(e,s,r,p,c,o)&&(a=!a),oe(e,s,c,o,X,b)&&(a=!a),oe(e,s,X,b,H,Y)&&(a=!a),oe(e,s,H,Y,r,p)&&(a=!a),a}function We(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),b=Math.max(r,c),H=Math.min(p,o),Y=Math.max(p,o);return e>=X&&e<=b&&s>=H&&s<=Y}function Je(e={}){const{blockPointerEvents:s=!1}=e,r=new le,p=({x:c,y:o,placement:X,elements:b,onClose:H,nodeId:Y,tree:a})=>{const M=X?.split("-")[0];let f=!1,U=null,G=null,i=typeof performance<"u"?performance.now():0;function D(F,t){const C=performance.now(),k=C-i;if(U===null||G===null||k===0)return U=F,G=t,i=C,!1;const E=F-U,g=t-G,O=E*E+g*g,I=k*k*Ve;return U=F,G=t,i=C,O<I}function _(){r.clear(),H()}return function(t){r.clear();const C=b.domReference,k=b.floating;if(!C||!k||M==null||c==null||o==null)return;const{clientX:E,clientY:g}=t,O=ge(t),I=t.type==="mouseleave",Q=N(k,O),x=N(C,O);if(Q&&(f=!0,!I))return;if(x&&(f=!1,!I)){f=!0;return}if(I&&q(t.relatedTarget)&&N(k,t.relatedTarget))return;function B(){return!!(a&&de(a.nodesRef.current,Y).length>0)}function $(){B()||_()}if(B())return;const h=C.getBoundingClientRect(),n=k.getBoundingClientRect(),v=c>n.right-n.width/2,u=o>n.bottom-n.height/2,R=n.width>h.width,T=n.height>h.height,J=(R?h:n).left,A=(R?h:n).right,d=(T?h:n).top,V=(T?h:n).bottom;if(M==="top"&&o>=h.bottom-1||M==="bottom"&&o<=h.top+1||M==="left"&&c>=h.right-1||M==="right"&&c<=h.left+1){$();return}let P=!1;switch(M){case"top":P=se(E,g,J,h.top+1,A,n.bottom-1);break;case"bottom":P=se(E,g,J,n.top+1,A,h.bottom-1);break;case"left":P=se(E,g,n.right-1,V,h.left+1,d);break;case"right":P=se(E,g,h.right-1,V,n.left+1,d);break}if(P)return;if(f&&!We(E,g,h)){$();return}if(!I&&D(E,g)){$();return}let S=!1;switch(M){case"top":{const l=R?m/2:m*4,w=R||v?c+l:c-l,y=R?c-l:v?c+l:c-l,L=o+m+1,W=v||R?n.bottom-m:n.top,K=v?R?n.bottom-m:n.top:n.bottom-m;S=re(E,g,w,L,y,L,n.left,W,n.right,K);break}case"bottom":{const l=R?m/2:m*4,w=R||v?c+l:c-l,y=R?c-l:v?c+l:c-l,L=o-m,W=v||R?n.top+m:n.bottom,K=v?R?n.top+m:n.bottom:n.top+m;S=re(E,g,w,L,y,L,n.left,W,n.right,K);break}case"left":{const l=T?m/2:m*4,w=T||u?o+l:o-l,y=T?o-l:u?o+l:o-l,L=c+m+1,W=u||T?n.right-m:n.left,K=u?T?n.right-m:n.left:n.right-m;S=re(E,g,W,n.top,K,n.bottom,L,w,L,y);break}case"right":{const l=T?m/2:m*4,w=T||u?o+l:o-l,y=T?o-l:u?o+l:o-l,L=c-m,W=u||T?n.left+m:n.right,K=u?T?n.left+m:n.right:n.left+m;S=re(E,g,L,w,L,y,W,n.top,K,n.bottom);break}}S?f||r.start(40,$):$()}};return p.__options={...e,blockPointerEvents:s},p}export{qe as a,$e as b,Me as c,me as g,Je as s,Qe as u};
@@ -1 +1 @@
1
- import{q as c}from"./__vite-browser-external-BW1rxvYq.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{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};
@@ -0,0 +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};
@@ -0,0 +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};
@@ -0,0 +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,4 +1,4 @@
1
- import{r as c,d as P,a6 as Oe}from"./__vite-browser-external-BW1rxvYq.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,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:`
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{a1 as r}from"./__vite-browser-external-DUJeOWgd.js";import{F as g}from"./composite-B4Z3F65o.js";function s(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{s as c,c as p};
@@ -1 +1 @@
1
- import{q as a}from"./__vite-browser-external-BW1rxvYq.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{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 +1 @@
1
- import{q as e}from"./__vite-browser-external-BW1rxvYq.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{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 +1 @@
1
- import{r as p,g as N,b as M}from"./__vite-browser-external-BW1rxvYq.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-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 +1 @@
1
- import{r as u}from"./__vite-browser-external-BW1rxvYq.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-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 +1 @@
1
- import{c as a,r as c,K as N,M as B,N as F,O as H}from"./__vite-browser-external-BW1rxvYq.js";const Q=["claude","codex","cursor","gemini","kimi","kiro","grok","copilot","antigravity","zcode","opencodeGo","commandCode","qoder","qoderCn","codingPlan","agentPlan","devin"],W={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 fe(e){return W[e]||null}function me(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 m=Q,E="tt.limits.providerOrder",I="tt.limits.providerVisibility",A="tt.limits.displayMode",D="tt.limits.showSubscriptions",O="tt.limits.updatedAt",C="limitsPreferences",X="limitsDisplayMode",Z="tt:limits-prefs-changed",w=Object.freeze({USED:"used",REMAINING:"remaining"}),g=new Set(Object.values(w)),_=new Set([E,I,A,D,O]);function h(){return[...m]}const $=new Set(["devin"]);function b(){return Object.fromEntries(m.map(e=>[e,!$.has(e)]))}function L(e){const r=[];if(Array.isArray(e))for(const o of e)m.includes(o)&&!r.includes(o)&&r.push(o);for(const o of m)r.includes(o)||r.push(o);return r}function P(e){const r=b();if(!e||typeof e!="object"||Array.isArray(e))return r;for(const o of m)typeof e[o]=="boolean"&&(r[o]=e[o]);return r}function ee(e){return g.has(e)?e:w.USED}function k(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:ee(r.displayMode),providerOrder:L(r.providerOrder),providerVisibility:P(r.providerVisibility),showSubscriptions:k(r.showSubscriptions),updatedAt:S(r.updatedAt)}}function re(){if(typeof window>"u")return h();try{const e=window.localStorage.getItem(E);return L(e?JSON.parse(e):void 0)}catch{return h()}}function R(){if(typeof window>"u")return b();try{const e=window.localStorage.getItem(I);return P(e?JSON.parse(e):void 0)}catch{return b()}}function Se(e){return e===null||_.has(e)}function we(){return R().devin===!0}function te(){if(typeof window>"u")return w.USED;try{const e=window.localStorage.getItem(A);return g.has(e)?e:w.USED}catch{return w.USED}}function ie(){if(typeof window>"u")return!0;try{const e=window.localStorage.getItem(D);return e===null?!0:k(JSON.parse(e))}catch{return!0}}function ne(){if(!(typeof window>"u"))try{return S(window.localStorage.getItem(O))}catch{return}}function oe(){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:te(),providerOrder:re(),providerVisibility:R(),showSubscriptions:ie(),updatedAt:ne()})}function se(e){if(typeof window>"u")return;const r=y(e);try{window.localStorage.setItem(E,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 de(e){const r=y(e);return{displayMode:r.displayMode,providerOrder:[...r.providerOrder],providerVisibility:{...r.providerVisibility},showSubscriptions:r.showSubscriptions,updatedAt:r.updatedAt??null}}function ae(...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 ce(e,r){return e.length===r.length&&e.every((o,d)=>o===r[d])}function ue(e,r){return m.every(o=>e[o]===r[o])}function K(e,r){return e.displayMode===r.displayMode&&ce(e.providerOrder,r.providerOrder)&&ue(e.providerVisibility,r.providerVisibility)&&e.showSubscriptions===r.showSubscriptions}function le(e,r){return K(e,r)&&S(e.updatedAt)===S(r.updatedAt)}function V(e,r){const o=S(e.updatedAt),d=S(r.updatedAt);return o!==void 0&&(d===void 0||o>d)}function ye(){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&&se(n),typeof window<"u"&&window.dispatchEvent(new CustomEvent(Z)),n},[]),l=c.useCallback(i=>{N()&&B(C,de(i))},[]),u=c.useCallback(i=>{const t=v(),n=V(t,o.current)?d(t):o.current,s=y(i(n));if(K(n,s))return;const p=ae(t.updatedAt,n.updatedAt),f=d({...s,updatedAt:p},{writeLocal:!0});l(f)},[d,l]),T=c.useCallback(i=>{g.has(i)&&u(t=>({...t,displayMode:i}))},[u]),x=c.useCallback(i=>{u(t=>({...t,showSubscriptions:!!i}))},[u]),M=c.useCallback(i=>{if(!g.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(!N())return;const i=F(t=>{const n=t?.[C];if(n&&typeof n=="object"){const s=y(n);if(!oe()){d(s,{writeLocal:!0});return}const p=v();if(V(s,p))d(s,{writeLocal:!0});else{const f=d(p);le(s,p)||l(f)}return}M(t?.[X])});return H(),i},[M,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=>{m.includes(i)&&u(t=>({...t,providerVisibility:{...t.providerVisibility,[i]:!t.providerVisibility[i]}}))},[u]),Y=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]),z=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 f=[...n.providerOrder],[J]=f.splice(s,1);return f.splice(p,0,J),{...n,providerOrder:f}})},[u]),G=c.useCallback(()=>{u(()=>({displayMode:w.USED,providerOrder:h(),providerVisibility:b(),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:T,setShowSubscriptions:x,visibleOrdered:j,toggle:U,moveUp:Y,moveDown:z,moveToward:q,reset:G}}export{Z as L,Se as a,w as b,Q as c,fe as d,we as i,me as l,ye as u};
1
+ import{c as a,r as c,G as V,W as B,U as F,V as H}from"./__vite-browser-external-DUJeOWgd.js";const Q=["claude","codex","cursor","gemini","kimi","kiro","grok","copilot","antigravity","zcode","opencodeGo","commandCode","qoder","qoderCn","codingPlan","agentPlan","devin"],W={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 fe(e){return W[e]||null}function me(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 m=Q,E="tt.limits.providerOrder",I="tt.limits.providerVisibility",A="tt.limits.displayMode",D="tt.limits.showSubscriptions",O="tt.limits.updatedAt",C="limitsPreferences",X="limitsDisplayMode",Z="tt:limits-prefs-changed",w=Object.freeze({USED:"used",REMAINING:"remaining"}),g=new Set(Object.values(w)),_=new Set([E,I,A,D,O]);function h(){return[...m]}const $=new Set(["devin"]);function b(){return Object.fromEntries(m.map(e=>[e,!$.has(e)]))}function L(e){const r=[];if(Array.isArray(e))for(const o of e)m.includes(o)&&!r.includes(o)&&r.push(o);for(const o of m)r.includes(o)||r.push(o);return r}function P(e){const r=b();if(!e||typeof e!="object"||Array.isArray(e))return r;for(const o of m)typeof e[o]=="boolean"&&(r[o]=e[o]);return r}function ee(e){return g.has(e)?e:w.USED}function k(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:ee(r.displayMode),providerOrder:L(r.providerOrder),providerVisibility:P(r.providerVisibility),showSubscriptions:k(r.showSubscriptions),updatedAt:S(r.updatedAt)}}function re(){if(typeof window>"u")return h();try{const e=window.localStorage.getItem(E);return L(e?JSON.parse(e):void 0)}catch{return h()}}function R(){if(typeof window>"u")return b();try{const e=window.localStorage.getItem(I);return P(e?JSON.parse(e):void 0)}catch{return b()}}function Se(e){return e===null||_.has(e)}function we(){return R().devin===!0}function te(){if(typeof window>"u")return w.USED;try{const e=window.localStorage.getItem(A);return g.has(e)?e:w.USED}catch{return w.USED}}function ie(){if(typeof window>"u")return!0;try{const e=window.localStorage.getItem(D);return e===null?!0:k(JSON.parse(e))}catch{return!0}}function ne(){if(!(typeof window>"u"))try{return S(window.localStorage.getItem(O))}catch{return}}function oe(){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:te(),providerOrder:re(),providerVisibility:R(),showSubscriptions:ie(),updatedAt:ne()})}function se(e){if(typeof window>"u")return;const r=y(e);try{window.localStorage.setItem(E,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 de(e){const r=y(e);return{displayMode:r.displayMode,providerOrder:[...r.providerOrder],providerVisibility:{...r.providerVisibility},showSubscriptions:r.showSubscriptions,updatedAt:r.updatedAt??null}}function ae(...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 ce(e,r){return e.length===r.length&&e.every((o,d)=>o===r[d])}function ue(e,r){return m.every(o=>e[o]===r[o])}function T(e,r){return e.displayMode===r.displayMode&&ce(e.providerOrder,r.providerOrder)&&ue(e.providerVisibility,r.providerVisibility)&&e.showSubscriptions===r.showSubscriptions}function le(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 ye(){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&&se(n),typeof window<"u"&&window.dispatchEvent(new CustomEvent(Z)),n},[]),l=c.useCallback(i=>{V()&&B(C,de(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=ae(t.updatedAt,n.updatedAt),f=d({...s,updatedAt:p},{writeLocal:!0});l(f)},[d,l]),U=c.useCallback(i=>{g.has(i)&&u(t=>({...t,displayMode:i}))},[u]),x=c.useCallback(i=>{u(t=>({...t,showSubscriptions:!!i}))},[u]),M=c.useCallback(i=>{if(!g.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(!V())return;const i=F(t=>{const n=t?.[C];if(n&&typeof n=="object"){const s=y(n);if(!oe()){d(s,{writeLocal:!0});return}const p=v();if(N(s,p))d(s,{writeLocal:!0});else{const f=d(p);le(s,p)||l(f)}return}M(t?.[X])});return H(),i},[M,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 K=c.useCallback(i=>{m.includes(i)&&u(t=>({...t,providerVisibility:{...t.providerVisibility,[i]:!t.providerVisibility[i]}}))},[u]),Y=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]),z=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]),G=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 f=[...n.providerOrder],[J]=f.splice(s,1);return f.splice(p,0,J),{...n,providerOrder:f}})},[u]),q=c.useCallback(()=>{u(()=>({displayMode:w.USED,providerOrder:h(),providerVisibility:b(),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:U,setShowSubscriptions:x,visibleOrdered:j,toggle:K,moveUp:Y,moveDown:z,moveToward:G,reset:q}}export{Z as L,Se as a,w as b,Q as c,fe as d,we as i,me as l,ye as u};
@@ -0,0 +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 +1 @@
1
- import{r as f}from"./__vite-browser-external-BW1rxvYq.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-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};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BotAnimated-Dx_vvTtC.js","assets/__vite-browser-external-DUJeOWgd.js","assets/__vite-browser-external-DFRX9dp-.css","assets/skins-Mc0sI20C.js"])))=>i.map(i=>d[i]);
2
+ import{r as s,j as g,a9 as T,P,E as B,aW as M,aX as $,aY as z,aZ as N}from"./__vite-browser-external-DUJeOWgd.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 W(){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 K(){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 X({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=K(),b=W(),[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 G=s.lazy(()=>T(()=>import("./BotAnimated-Dx_vvTtC.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 Y(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 Z({state:e="idle-living",size:t=48,className:n=""}){const[i,o]=s.useState(""),d=s.useRef(null),r=J()?"static-base":e,u=x[r]||x["static-base"];return s.useEffect(()=>{let c=!1;return Y(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(G,{state:e,size:t*R(r),className:n,color:l})}):u==="atlas"?g.jsx(X,{character:r,pet:o,state:e,size:t,className:n,lookDirectionIndex:d}):g.jsx(Z,{state:e,size:t*R(r),className:n})}function J(){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",Q="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:Q};function ue(e){return ie[e]||re}const se={visible:!1,character:"clawd",size:"medium",botColor:"auto"};function ge(){const e=(P()||B())&&M(),[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-DUJeOWgd.js";import{h as r,i as t,p as s}from"./react-B7SkZTgg.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-CO1HovF5.js";import{r as f}from"./__vite-browser-external-BW1rxvYq.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-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};
@@ -0,0 +1 @@
1
+ import{G as S,I as M,r as w,c as P,az as O,aA as R,aB as g,aC as z}from"./__vite-browser-external-DUJeOWgd.js";import{l as q,i as _,L as F,a as j}from"./use-limits-display-prefs-NZ-AAYD5.js";import{u as T}from"./use-latest-request-guard-DHv7vfFE.js";const L="native:notificationPermission";let I=null;function A(){return typeof window<"u"&&!!window.chrome?.webview}function x(){return S()?I||"unknown":A()?"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"&&(I=s),e(x())};return window.addEventListener(L,i),e(x()),S()&&M({type:"getNotificationStatus"}),()=>window.removeEventListener(L,i)}async function B(){if(S()){M({type:"requestNotificationPermission"});return}A()||typeof Notification<"u"&&Notification.permission==="default"&&await Notification.requestPermission().catch(()=>"denied")}const v="tt.limitAlerts.enabled";function G(){try{return window.localStorage.getItem(v)==="1"}catch{return!1}}function le(){const[e,i]=w.useState(G),[n,s]=w.useState("unknown");w.useEffect(()=>$(s),[]);const y=w.useCallback(async o=>{const l=!!o;l&&await B();try{window.localStorage.setItem(v,l?"1":"0")}catch{}i(l)},[]);return{enabled:e,setEnabled:y,permissionBlocked:n==="denied"}}function V(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 H(e,i,n=.03){return e>i+n}function U(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=V(i,a);if(r==null)return l;if(l.expectedPercent=Math.round(r*100),l.paceOver=H(o,r),o>0){const m=s==="remaining"?1-r:r;l.pacePercent=m*100}if(r>.02&&o>0){const m=i*r,u=o/m,f=o/r;f>=1&&u>0?l.runsOutEta=U((1-o)/u):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:{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})):[{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"}]}}},D="tt.limitAlerts.cycles.v1";function X(){try{return JSON.parse(window.localStorage.getItem(D)||"{}")}catch{return{}}}function Z(e){try{window.localStorage.setItem(D,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,u=W(m),f=Y({usedPercent:r,windowSeconds:J(a,a.window),resetMs:u,mode:"used",now:i});!f.runsOutEta||!f.paceOver||r<20||!(u>i)||n.push({id:`${y}:${a.key}:${u}`,providerId:y,windowKey:a.key,resetMs:u,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 k(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?k(e?.initialState?.data??null,_()):null),[a,r]=w.useState(()=>n?e?.initialState?.error??null:null),[m,u]=w.useState(i&&!n),f=!!e?.initialRefresh,K=!!e?.publishToPreloadCache,b=T([s,i]);w.useEffect(()=>{if(typeof window>"u")return;const d=()=>y(_()),t=c=>{j(c.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(v)==="1"&&ie(o)}catch{}},[o,i]);const p=w.useCallback((d,t)=>{!i||!K||!d||typeof d!="object"||R(k(d,_()),{source:t})},[i,K]),C=w.useCallback(async()=>{if(!i)return;const d=b();try{const t=await g({refresh:!0,devinEnabled:_()});if(!d())return;const c=t&&typeof t=="object"?t:null;l(k(c,_())),r(null),u(!1),p(c,"manual-refresh")}catch(t){if(!d())return;r(t?.message||String(t)),u(!1)}},[b,i,p]),h=w.useCallback(async()=>{if(!i)return;const d=b();try{const t=await g({devinEnabled:_()});if(!d())return;const c=t&&typeof t=="object"?t:null;l(k(c,_())),r(null),u(!1),p(c,"page-load")}catch(t){if(!d())return;r(t?.message||String(t)),u(!1)}},[b,i,p]);w.useEffect(()=>{if(!i||typeof window>"u"||typeof document>"u")return;const d=15e3;let t=Date.now();const c=()=>{if(document.visibilityState!=="visible")return;const N=Date.now();N-t<d||(t=N,h())};return window.addEventListener("focus",c),document.addEventListener("visibilitychange",c),()=>{window.removeEventListener("focus",c),document.removeEventListener("visibilitychange",c)}},[i,h]);const E=w.useRef(s);return w.useEffect(()=>{E.current!==s&&(E.current=s,i&&(s||l(d=>k(d,!1)),h()))},[s,i,h]),w.useEffect(()=>{if(!i){l(null),r(null),u(!1);return}if(n&&!f)return;const d=b();(async()=>{try{const t=await g({devinEnabled:_()});if(!d())return;const c=t&&typeof t=="object"?t:null;l(k(c,_())),r(null),p(c,"page-load")}catch(t){if(!d())return;r(t?.message||String(t))}finally{d()&&u(!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,C as t,D as r,t as c}from"./__vite-browser-external-BW1rxvYq.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,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};
@@ -0,0 +1 @@
1
+ import{aL as z,bx as oe,bw as me,by as te,bz as U,bA as je,bB as Me,bC as ze,bD as qt,bE as Et,bF as Kt,bG as Ye,bH as Ct,bI as $e,bJ as Ne,bK as gt,bL as Pt,r as b,an as Gt,aK as xe,aJ as Jt,aM as Qt,bM as Zt,a1 as en,_ as tn}from"./__vite-browser-external-DUJeOWgd.js";import{a as nn,c as Ee,z as on}from"./composite-B4Z3F65o.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 j(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(j(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=j(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=j(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=j(i),x=X(c),R=j(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=j(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(j(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=j(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?je(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)&&((Ye(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)&&Ye(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"?je(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)&&((Ye(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(je(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",jn=function(){},Pe=Xn?b.useLayoutEffect:jn;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 Yn(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=Yn({...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,j(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,jt=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,jt,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(j(C.placement)),Z=_==="y"?I:N,Y=_==="y"?D.left+D.right:D.top+D.bottom;return{offset:Z/2+Y/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 Y=U(C).devicePixelRatio||1,{x:Ae,y:ae,width:Oe,height:ee}=_.reference,he=(Math.round((Ae+Oe)*Y)-Math.round(Ae*Y))/Y,pe=(Math.round((ae+ee)*Y)-Math.round(ae*Y))/Y;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:Y,y:Ae}=C,ae=j(_),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 Yt=ee?N.arrow?.x||0:N.arrow?.y||0,Ut=ee?he?.clientWidth||0:he?.clientHeight||0;Se=`${Yt+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=`${Y.reference.y+Y.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=j(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};
@@ -0,0 +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 +1 @@
1
- import{q as e}from"./__vite-browser-external-BW1rxvYq.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=e(a);export{n as Z};
1
+ import{A as e}from"./__vite-browser-external-DUJeOWgd.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=e(a);export{n as Z};
@@ -272,8 +272,8 @@
272
272
  ]
273
273
  }
274
274
  </script>
275
- <script type="module" crossorigin src="/assets/__vite-browser-external-BW1rxvYq.js"></script>
276
- <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-gKkiQad5.css">
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">
277
277
  </head>
278
278
  <body>
279
279
  <main class="aeo-seed-content" aria-label="Token Tracker AI-readable summary">
@@ -164,8 +164,8 @@
164
164
  ]
165
165
  }
166
166
  </script>
167
- <script type="module" crossorigin src="/assets/__vite-browser-external-BW1rxvYq.js"></script>
168
- <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-gKkiQad5.css">
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">
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-BW1rxvYq.js"></script>
139
- <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-gKkiQad5.css">
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">
140
140
  </head>
141
141
  <body>
142
142
  <main class="aeo-seed-content" aria-label="AI Coding Token Usage Leaderboard AI-readable summary">
@@ -1,10 +1,11 @@
1
1
  <!doctype html>
2
2
  <html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Cloud pricing | TokenTracker</title><link rel="stylesheet" href="/legal.css"></head><body><header><a href="/">TokenTracker</a></header><main><h1>TokenTracker Cloud pricing</h1>
3
- <p>Paid Cloud is being prepared and is not open for purchases. The local TokenTracker software remains free and open source.</p>
3
+ <p>Official hosted Cloud purchases are available on the <a href="/cloud">Cloud page</a>. The local TokenTracker software remains free and open source.</p>
4
4
  <h2>Free local use</h2>
5
5
  <p>Token collection, all supported provider integrations, cost estimates, provider limits, local charts, local exports and desktop features remain free. A Cloud subscription is not required. Basic community leaderboard participation remains available to free accounts.</p>
6
- <h2>The planned hosted Cloud service</h2>
7
- <p>Cloud combines usage across computers in a personal account with web access, hosted history and exports, and synchronization/device management for up to five registered devices. Proposed history limits are 90 days of hourly detail and 24 months of daily summaries. Only usage metrics are synchronized. Prompts, responses, code, project/session records and AI provider credentials are not uploaded.</p>
6
+ <h2>TokenTracker Cloud</h2>
7
+ <p>Official hosted synchronization, storage, bandwidth, backups and maintenance require ongoing resources as usage grows. Cloud subscriptions support this service and its continued maintenance. The complete local app stays free and open source.</p>
8
+ <p>Cloud combines usage across computers in a personal account with web access, hosted history and exports, and synchronization/device management for up to five registered devices. Cloud history covers 90 days of hourly detail and 24 months of daily summaries. Only usage metrics are synchronized. Prompts, responses, code, project/session records and AI provider credentials are not uploaded.</p>
8
9
  <table>
9
10
  <thead>
10
11
  <tr>
@@ -29,7 +30,7 @@
29
30
  </tr>
30
31
  </tbody>
31
32
  </table>
32
- <p>The annual price is the total annual charge before tax. These base prices apply worldwide. Waffo Pancake hosted checkout is planned after production approval and will show applicable tax, the final total and available payment methods before payment. No payment is collected on this page.</p>
33
- <p>Canceling automatic renewal preserves the paid term. An optional seven-day no-card trial will not convert automatically into a paid plan. Existing free accounts will not be charged without choosing and authorizing a purchase. Final launch availability and dates will be announced before billing starts.</p>
33
+ <p>The annual price is the total annual charge before tax. These base prices apply worldwide. Waffo Pancake hosted checkout shows applicable tax, the final total and available payment methods before payment. Choose a plan on the <a href="/cloud">Cloud page</a> to continue to secure checkout.</p>
34
+ <p>Canceling automatic renewal preserves the paid term. A seven-day no-card trial does not convert automatically into a paid plan. Existing free accounts are not charged without choosing and authorizing a purchase. Devices registered before Cloud activation receive a 30-day transition period for hosted synchronization.</p>
34
35
  <h2>Help and terms</h2>
35
36
  <p>Read the <a href="/terms.html">Terms of Service</a> for billing, cancellation and the refund policy, and the <a href="/privacy.html">Privacy Policy</a> for data handling. For product, account and billing questions, contact <a href="mailto:rynnsun0509@gmail.com">rynnsun0509@gmail.com</a>.</p></main><footer><a href="/pricing.html">Cloud pricing</a><a href="/terms.html">Terms of Service</a><a href="/privacy.html">Privacy Policy</a><a href="mailto:rynnsun0509@gmail.com">Support: rynnsun0509@gmail.com</a></footer></body></html>
@@ -273,6 +273,6 @@
273
273
  <h2>9. Contact</h2>
274
274
  <p>Questions, corrections, or deletion requests: <a href="mailto:rynnsun0509@gmail.com">rynnsun0509@gmail.com</a>. Do not publish private account or payment information in GitHub issues.</p>
275
275
  <h2>Planned Cloud billing</h2>
276
- <p>Paid Cloud has not launched. For the planned billing service, Waffo Pancake will operate hosted checkout and handle payment details under its own terms and privacy policy. TokenTracker will receive the order/payment reference, billing email, purchased plan, amount/currency, payment status, subscription term and refund status necessary to deliver access and handle billing. Full payment card numbers and security codes are not stored by TokenTracker. Only the usage metrics described above will be synchronized.</p>
277
- <p>The planned membership provides access to 90 days of hourly details and 24 months of daily summaries. After membership expires, personal history has a 30-day read/export window. These are access windows, not a promise to delete all stored usage on the expiry date. Aggregated community statistics and compressed usage metrics may be retained to preserve and correct lifetime statistics. Necessary billing records may be retained to meet legal/accounting obligations and resolve payment disputes. Contact the private support address for access, correction or deletion requests; legally required records may be retained. Local data is unaffected by Cloud expiry.</p>
278
- <p>TokenTracker is operated by Sun Xiufeng, an individual developer in China. Account and usage storage uses the existing InsForge backend, including infrastructure in the United States; other providers can process data in their operating regions. Contact <a href="mailto:rynnsun0509@gmail.com">rynnsun0509@gmail.com</a> for privacy and security requests. This billing supplement was added on 8 October 2026 and describes the planned billing service. Paid Cloud is not yet open.</p></main><footer><a href="/pricing.html">Cloud pricing</a><a href="/terms.html">Terms of Service</a><a href="/privacy.html">Privacy Policy</a><a href="mailto:rynnsun0509@gmail.com">Support: rynnsun0509@gmail.com</a></footer></body></html>
276
+ <p>Waffo Pancake operates hosted checkout and handles payment details under its own terms and privacy policy. TokenTracker receives the order/payment reference, billing email, purchased plan, amount/currency, payment status, subscription term and refund status necessary to deliver access and handle billing. Full payment card numbers and security codes are not stored by TokenTracker. Only the usage metrics described above are synchronized.</p>
277
+ <p>Cloud membership provides access to 90 days of hourly details and 24 months of daily summaries. After membership expires, personal history has a 30-day read/export window. These are access windows, not a promise to delete all stored usage on the expiry date. Aggregated community statistics and compressed usage metrics may be retained to preserve and correct lifetime statistics. Necessary billing records may be retained to meet legal/accounting obligations and resolve payment disputes. Contact the private support address for access, correction or deletion requests; legally required records may be retained. Local data is unaffected by Cloud expiry.</p>
278
+ <p>TokenTracker is operated by Sun Xiufeng, an individual developer in China. Account and usage storage uses the existing InsForge backend, including infrastructure in the United States; other providers can process data in their operating regions. Contact <a href="mailto:rynnsun0509@gmail.com">rynnsun0509@gmail.com</a> for privacy and security requests. This billing supplement was updated on 10 October 2026.</p></main><footer><a href="/pricing.html">Cloud pricing</a><a href="/terms.html">Terms of Service</a><a href="/privacy.html">Privacy Policy</a><a href="mailto:rynnsun0509@gmail.com">Support: rynnsun0509@gmail.com</a></footer></body></html>
@@ -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-BW1rxvYq.js"></script>
79
- <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-gKkiQad5.css">
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">
80
80
  </head>
81
81
  <body>
82
82
  <main class="aeo-seed-content" aria-label="Token Tracker share page summary">
@@ -6,22 +6,22 @@
6
6
  <p>The open-source local software remains governed by its MIT license. Buying Cloud is not required to use the local software. You must be at least 18 and authorized to enter into the subscription agreement. If you do not agree to the applicable terms, do not purchase or use the hosted service.</p>
7
7
  <h2>2. The service</h2>
8
8
  <p>TokenTracker analyzes usage metrics from AI coding tools. Local token collection, cost estimates, provider limits, local charts, exports and desktop features remain free. TokenTracker does not sell AI model tokens or generate AI content for customers.</p>
9
- <p>The planned Cloud service provides hosted cross-device usage analytics, a personal web dashboard, history and exports, and device management for up to five registered synchronization devices. The proposed history window is 90 days of hourly details and 24 months of daily summaries. Cloud synchronizes usage metrics, not prompts, responses, source code, AI provider credentials, or local project and session records.</p>
10
- <p>Paid Cloud is not yet open. These billing provisions describe the planned service and apply to purchases only after the service opens and the customer accepts the terms at checkout. Purchasing eligibility and availability will be shown on the website. Access begins only after the server verifies a successful payment.</p>
9
+ <p>Cloud provides hosted cross-device usage analytics, a personal web dashboard, history and exports, and device management for up to five registered synchronization devices. Members can access 90 days of hourly details and 24 months of daily summaries. Cloud synchronizes usage metrics, not prompts, responses, source code, AI provider credentials, or local project and session records.</p>
10
+ <p>These billing provisions apply to purchases accepted at checkout. Purchasing eligibility and availability are shown on the website. Purchased access begins only after the server verifies a successful payment.</p>
11
11
  <h2>3. Accounts</h2>
12
12
  <p>Keep your account and billing email accurate. Protect your credentials and contact support if an account is compromised. You are responsible for authorized activity on your account. If you act for an organization, you must have authority to do so.</p>
13
13
  <h2>4. Plans, pricing and taxes</h2>
14
- <p>The confirmed base price for the planned Cloud service is USD 4.99 per month or USD 39.99 per year. The annual amount is charged once per year, not monthly. Recurring and fixed-term access have the same base prices. See <a href="/pricing.html">Cloud pricing</a>.</p>
15
- <p>Prices exclude applicable taxes. Waffo Pancake is the intended Merchant of Record and hosted payment provider, subject to its approval and applicable terms. Its checkout displays available payment methods, taxes and the final total before payment. TokenTracker does not store full payment card numbers or security codes.</p>
14
+ <p>The Cloud base price is USD 4.99 per month or USD 39.99 per year. The annual amount is charged once per year, not monthly. Recurring and fixed-term access have the same base prices. See <a href="/pricing.html">Cloud pricing</a>.</p>
15
+ <p>Prices exclude applicable taxes. Waffo Pancake provides hosted checkout under its applicable terms. Its checkout displays available payment methods, taxes and the final total before payment. TokenTracker does not store full payment card numbers or security codes.</p>
16
16
  <h2>5. Recurring and fixed-term billing</h2>
17
17
  <p>A recurring plan renews monthly or yearly until canceled. The customer must expressly authorize recurring payments at checkout. We will not charge an existing free account merely because paid Cloud launches.</p>
18
18
  <p>A fixed-term purchase is a single payment for the displayed term and does not authorize automatic renewal. Buying another fixed term extends access according to the term shown before purchase. Do not start overlapping subscriptions; manage the current plan first.</p>
19
19
  <p>A seven-day no-card trial, where offered, begins only when the user activates it and does not automatically turn into a paid subscription. Changes to prices or material billing terms will be communicated before they apply to a future purchase or renewal. Paid terms already purchased retain their agreed price and duration.</p>
20
20
  <h2>6. Cancellation and expiry</h2>
21
- <p>After launch, recurring customers can stop renewal through account billing or Waffo's customer portal at https://pancake.waffo.ai/consumer/portal/login, using the email entered at checkout. Support can assist at rynnsun0509@gmail.com. Cancellation stops future renewal charges while access continues until the paid term ends. Cancellation alone does not request a refund.</p>
21
+ <p>Recurring customers can stop renewal through account billing or Waffo's customer portal at https://pancake.waffo.ai/consumer/portal/login, using the email entered at checkout. Support can assist at rynnsun0509@gmail.com. Cancellation stops future renewal charges while access continues until the paid term ends. Cancellation alone does not request a refund.</p>
22
22
  <p>After a trial or paid term ends, new personal Cloud uploads stop. Previously retained personal Cloud history remains readable and exportable for 30 days, subject to the plan's history windows. Local use and free community leaderboard participation continue. Pausing a device does not delete its local data. See the <a href="/privacy.html">Privacy Policy</a> for retention and deletion requests.</p>
23
23
  <h2>7. Refund policy</h2>
24
- <p>The following policy applies to Cloud purchases after paid Cloud opens:</p>
24
+ <p>The following policy applies to Cloud purchases:</p>
25
25
  <ul>
26
26
  <li>First-time Cloud buyers may request a full refund within seven days of their initial payment, for either a monthly or annual term.</li>
27
27
  <li>Confirmed duplicate charges or incorrect charges are refundable.</li>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tokentracker-cli",
3
- "version": "1.2.1",
3
+ "version": "1.3.3",
4
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.",
5
5
  "main": "src/cli.js",
6
6
  "bin": {
@@ -57,10 +57,14 @@
57
57
  "yauzl": "^3.4.0"
58
58
  },
59
59
  "devDependencies": {
60
+ "@electric-sql/pglite": "^0.5.8",
60
61
  "@sourcegraph/scip-typescript": "^0.4.0",
62
+ "@waffo/pancake-ts": "0.25.0",
63
+ "alipay-sdk": "4.14.0",
61
64
  "esbuild": "0.28.2",
62
65
  "pngjs": "^7.0.0",
63
- "sql.js": "1.14.2"
66
+ "sql.js": "1.14.2",
67
+ "urllib": "4.9.1"
64
68
  },
65
69
  "repository": {
66
70
  "type": "git",