tokentracker-cli 0.81.3 → 0.82.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dashboard/dist/assets/{AchievementBadge-DiSoAalB.js → AchievementBadge-CkmyCQlm.js} +1 -1
  2. package/dashboard/dist/assets/{AchievementsPage-DI_cvzqy.js → AchievementsPage-B4WDkj4Q.js} +2 -2
  3. package/dashboard/dist/assets/{AchievementsSection-ClWZZNvc.js → AchievementsSection-CLA812Vd.js} +1 -1
  4. package/dashboard/dist/assets/{BadgeDetailModal-DpQeG_6H.js → BadgeDetailModal-rPrkKVBY.js} +1 -1
  5. package/dashboard/dist/assets/{Card-B0hyofoy.js → Card-D4wKdGxL.js} +1 -1
  6. package/dashboard/dist/assets/{ClawdAnimated-DZJGQ3-9.js → ClawdAnimated-BzfSSyf4.js} +1 -1
  7. package/dashboard/dist/assets/{CommunityStatsModal-Dcikt0kT.js → CommunityStatsModal-BDgJ6Rdv.js} +1 -1
  8. package/dashboard/dist/assets/{ConfirmModal-DCfRP4oI.js → ConfirmModal-CjKotIxk.js} +1 -1
  9. package/dashboard/dist/assets/DashboardPage-C61HPDUg.js +1 -0
  10. package/dashboard/dist/assets/{DevicePage-De6KuFaJ.js → DevicePage-Bwrgs9bf.js} +1 -1
  11. package/dashboard/dist/assets/DialogDescription-D0X0v38O.js +1 -0
  12. package/dashboard/dist/assets/DialogTitle-qsUpNlJa.js +1 -0
  13. package/dashboard/dist/assets/{FadeIn-DZoN7vbQ.js → FadeIn-D_skMXdS.js} +1 -1
  14. package/dashboard/dist/assets/{HeaderGithubStar-C9HQnEsI.js → HeaderGithubStar-Er3o6s3b.js} +1 -1
  15. package/dashboard/dist/assets/{IpCheckPage-82zniXwO.js → IpCheckPage-CVelrxeM.js} +1 -1
  16. package/dashboard/dist/assets/{LandingPage-Df9fdR0n.js → LandingPage-0YKN8fUt.js} +14 -14
  17. package/dashboard/dist/assets/{LeaderboardAvatar-CjfEgoR8.js → LeaderboardAvatar-BTIhp_Eo.js} +1 -1
  18. package/dashboard/dist/assets/{LeaderboardPage-BdbE6Nhj.js → LeaderboardPage-bGkIx65M.js} +2 -2
  19. package/dashboard/dist/assets/{LeaderboardProfileModal-CDTK21dp.js → LeaderboardProfileModal-HATS5y64.js} +3 -3
  20. package/dashboard/dist/assets/{LeaderboardProfilePage-B6QWnwB1.js → LeaderboardProfilePage-mnQke6q-.js} +3 -3
  21. package/dashboard/dist/assets/LimitsPage-OyBAsn4S.js +4 -0
  22. package/dashboard/dist/assets/{LocalOnlyNotice-DOcSDrOy.js → LocalOnlyNotice-Dc1CtgPN.js} +1 -1
  23. package/dashboard/dist/assets/{LoginPage-WY_sRA7I.js → LoginPage-BXJQ9slu.js} +1 -1
  24. package/dashboard/dist/assets/{PetPage-CNbgNE6f.js → PetPage-DsjNXLBM.js} +1 -1
  25. package/dashboard/dist/assets/{PopoverPopup-Cv525-dF.js → PopoverPopup-BuSDh9-C.js} +1 -1
  26. package/dashboard/dist/assets/ResetPasswordPage-Bc15F6XB.js +1 -0
  27. package/dashboard/dist/assets/{Select-3HkgkO8y.js → Select-DE6DMSrS.js} +1 -1
  28. package/dashboard/dist/assets/{SelectItemText-Bz8FAKEv.js → SelectItemText-Ca7gf5A0.js} +1 -1
  29. package/dashboard/dist/assets/SettingsPage-C_c9z42f.js +1 -0
  30. package/dashboard/dist/assets/{SkillsPage-Dnz3eGcE.js → SkillsPage-iR9Slxl2.js} +1 -1
  31. package/dashboard/dist/assets/{TrendMonitor-OopQ06B8.js → TrendMonitor-C-acyVP7.js} +2 -2
  32. package/dashboard/dist/assets/WidgetsPage-DmiqtvrV.js +1 -0
  33. package/dashboard/dist/assets/{WrappedPage-Dbd-8EKD.js → WrappedPage-wnw_Eknp.js} +1 -1
  34. package/dashboard/dist/assets/{__vite-browser-external-CxN2E6q5.js → __vite-browser-external-CHbEWSwX.js} +48 -18
  35. package/dashboard/dist/assets/__vite-browser-external-Cd947_ni.css +1 -0
  36. package/dashboard/dist/assets/agent-logos-DF4o0Ebm.js +1 -0
  37. package/dashboard/dist/assets/{arrow-up-right-CGnVz9Km.js → arrow-up-right-B1yj6nxk.js} +1 -1
  38. package/dashboard/dist/assets/{check-CkI3WNti.js → check-Dvngccc0.js} +1 -1
  39. package/dashboard/dist/assets/{copy-Bh3g2_O-.js → copy-D592E6jX.js} +1 -1
  40. package/dashboard/dist/assets/{download-BITw7nKX.js → download-HHcFs0Ff.js} +1 -1
  41. package/dashboard/dist/assets/{flame-ByAsnNar.js → flame-DCV1yyCQ.js} +1 -1
  42. package/dashboard/dist/assets/{format-tokens-Cu8JtuN4.js → format-tokens-BN3gD2gw.js} +1 -1
  43. package/dashboard/dist/assets/{icons-D9OB0N43.js → icons-DhvcZGBX.js} +1 -1
  44. package/dashboard/dist/assets/{info-Mu2CLf-A.js → info-DoeeLajS.js} +1 -1
  45. package/dashboard/dist/assets/limits-providers-Db3iK5TG.js +1 -0
  46. package/dashboard/dist/assets/{link-2-CSlVaUw9.js → link-2-C4RnhbaI.js} +1 -1
  47. package/dashboard/dist/assets/{loader-circle-CYck0YaS.js → loader-circle-Cz7QNoOj.js} +1 -1
  48. package/dashboard/dist/assets/{provider-display-BB925tPa.js → provider-display-BvvK0p2x.js} +1 -1
  49. package/dashboard/dist/assets/{terminal-4YysOnTe.js → terminal-Bwl-eNY6.js} +1 -1
  50. package/dashboard/dist/assets/{trash-2-C8-ZfrZG.js → trash-2-Ceor8aI2.js} +1 -1
  51. package/dashboard/dist/assets/{use-community-stats-Cxt-otko.js → use-community-stats-C0cLdfhQ.js} +1 -1
  52. package/dashboard/dist/assets/use-limits-display-prefs-B-zzSXHf.js +1 -0
  53. package/dashboard/dist/assets/{use-native-settings-DbdPXxGf.js → use-native-settings-CIHg16YZ.js} +1 -1
  54. package/dashboard/dist/assets/{use-ordered-list-BZMM-iIj.js → use-ordered-list-XWE9dLyL.js} +1 -1
  55. package/dashboard/dist/assets/use-session-efficiency-pref-DUe7bWPZ.js +1 -0
  56. package/dashboard/dist/assets/use-transform-DgEhM1tE.js +1 -0
  57. package/dashboard/dist/assets/use-usage-limits-B_NbJCPh.js +1 -0
  58. package/dashboard/dist/assets/{useCurrency-CpDnFC0N.js → useCurrency-QqSMR7Ba.js} +1 -1
  59. package/dashboard/dist/assets/{useScrollLock-Vyaif-7C.js → useScrollLock-DdUQVKDA.js} +1 -1
  60. package/dashboard/dist/assets/{useTokenFormat-B8FrUarf.js → useTokenFormat-BLfmNxg5.js} +1 -1
  61. package/dashboard/dist/assets/{zap-CdeKJ6HL.js → zap-DjGiVr-_.js} +1 -1
  62. package/dashboard/dist/index.html +2 -2
  63. package/dashboard/dist/share.html +2 -2
  64. package/package.json +1 -1
  65. package/src/cli.js +6 -0
  66. package/src/commands/sessions.js +29 -0
  67. package/src/lib/context-health.js +124 -0
  68. package/src/lib/git-outcomes.js +147 -0
  69. package/src/lib/local-api.js +45 -3
  70. package/src/lib/outcomes-engine.js +23 -0
  71. package/src/lib/pricing/seed-snapshot.json +1 -1
  72. package/src/lib/session-analytics.js +612 -0
  73. package/src/lib/usage-limits.js +21 -0
  74. package/dashboard/dist/assets/DashboardPage-DBajsWEp.js +0 -1
  75. package/dashboard/dist/assets/DialogDescription-uQ4gVIv9.js +0 -1
  76. package/dashboard/dist/assets/DialogTitle-BvElfi0r.js +0 -1
  77. package/dashboard/dist/assets/LimitsPage-f0L0d15j.js +0 -4
  78. package/dashboard/dist/assets/ResetPasswordPage-vrcj6bBP.js +0 -1
  79. package/dashboard/dist/assets/SettingsPage-CVldAt69.js +0 -1
  80. package/dashboard/dist/assets/WidgetsPage-4dWjZkc9.js +0 -1
  81. package/dashboard/dist/assets/__vite-browser-external-CQxW1DuO.css +0 -1
  82. package/dashboard/dist/assets/agent-logos-CT9fumzx.js +0 -1
  83. package/dashboard/dist/assets/use-limits-display-prefs-BUFZh6fe.js +0 -1
  84. package/dashboard/dist/assets/use-quality-per-dollar-pref-DXoW5A0_.js +0 -1
  85. package/dashboard/dist/assets/use-transform-CuAoUb8H.js +0 -1
  86. package/dashboard/dist/assets/use-usage-limits-BEc3QMzR.js +0 -1
@@ -1 +0,0 @@
1
- import{c as u,r as a,G as M,H as G,I as j,J}from"./__vite-browser-external-CxN2E6q5.js";const B=["claude","codex","cursor","gemini","kimi","kiro","grok","copilot","antigravity","zcode","opencodeGo"],q={claude:"CLAUDE",codex:"CODEX",cursor:"CURSOR",gemini:"GEMINI",kimi:"KIMI",kiro:"KIRO",grok:"GROK",copilot:"COPILOT",antigravity:"ANTIGRAVITY",zcode:"ZCODE",opencodeGo:"OPENCODE"};function se(e){return q[e]||null}function ae(e){switch(e){case"claude":return u("limits.provider.claude");case"codex":return u("limits.provider.codex");case"cursor":return u("limits.provider.cursor");case"gemini":return u("limits.provider.gemini");case"kimi":return u("limits.provider.kimi");case"kiro":return u("limits.provider.kiro");case"grok":return u("limits.provider.grok");case"copilot":return u("limits.provider.copilot");case"antigravity":return u("limits.provider.antigravity");case"zcode":return u("limits.provider.zcode");case"opencodeGo":return u("limits.provider.opencode_go");default:return String(e||"")}}const y=B,E="tt.limits.providerOrder",A="tt.limits.providerVisibility",h="tt.limits.displayMode",S="tt.limits.updatedAt",V="limitsPreferences",F="limitsDisplayMode",v=Object.freeze({USED:"used",REMAINING:"remaining"}),g=new Set(Object.values(v)),L=new Set([E,A,h,S]);function b(){return[...y]}function I(){return Object.fromEntries(y.map(e=>[e,!0]))}function _(e){const r=[];if(Array.isArray(e))for(const n of e)y.includes(n)&&!r.includes(n)&&r.push(n);for(const n of y)r.includes(n)||r.push(n);return r}function N(e){const r=I();if(!e||typeof e!="object"||Array.isArray(e))return r;for(const n of y)typeof e[n]=="boolean"&&(r[n]=e[n]);return r}function H(e){return g.has(e)?e:v.USED}function m(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 n=Number(r);return Number.isSafeInteger(n)?n:void 0}}}function O(e={}){const r=e&&typeof e=="object"?e:{};return{displayMode:H(r.displayMode),providerOrder:_(r.providerOrder),providerVisibility:N(r.providerVisibility),updatedAt:m(r.updatedAt)}}function X(){if(typeof window>"u")return b();try{const e=window.localStorage.getItem(E);return _(e?JSON.parse(e):void 0)}catch{return b()}}function Z(){if(typeof window>"u")return I();try{const e=window.localStorage.getItem(A);return N(e?JSON.parse(e):void 0)}catch{return I()}}function Q(){if(typeof window>"u")return v.USED;try{const e=window.localStorage.getItem(h);return g.has(e)?e:v.USED}catch{return v.USED}}function W(){if(!(typeof window>"u"))try{return m(window.localStorage.getItem(S))}catch{return}}function $(){if(typeof window>"u")return!1;try{for(const e of L)if(window.localStorage.getItem(e)!==null)return!0}catch{return!1}return!1}function w(){return O({displayMode:Q(),providerOrder:X(),providerVisibility:Z(),updatedAt:W()})}function ee(e){if(typeof window>"u")return;const r=O(e);try{window.localStorage.setItem(E,JSON.stringify(r.providerOrder)),window.localStorage.setItem(A,JSON.stringify(r.providerVisibility)),window.localStorage.setItem(h,r.displayMode),r.updatedAt===void 0?window.localStorage.removeItem(S):window.localStorage.setItem(S,String(r.updatedAt))}catch(n){console.warn("[tokentracker] limits preferences localStorage write failed:",n)}}function re(e){const r=O(e);return{displayMode:r.displayMode,providerOrder:[...r.providerOrder],providerVisibility:{...r.providerVisibility},updatedAt:r.updatedAt??null}}function te(...e){let r;for(const s of e){const l=m(s);l!==void 0&&(r=r===void 0?l:Math.max(r,l))}const n=Date.now();return r!==void 0&&n<=r?r+1:n}function ie(e,r){return e.length===r.length&&e.every((n,s)=>n===r[s])}function ne(e,r){return y.every(n=>e[n]===r[n])}function C(e,r){return e.displayMode===r.displayMode&&ie(e.providerOrder,r.providerOrder)&&ne(e.providerVisibility,r.providerVisibility)}function oe(e,r){return C(e,r)&&m(e.updatedAt)===m(r.updatedAt)}function k(e,r){const n=m(e.updatedAt),s=m(r.updatedAt);return n!==void 0&&(s===void 0||n>s)}function ce(){const[e,r]=a.useState(w),n=a.useRef(e),s=a.useCallback((o,t={})=>{const i=O(o);return n.current=i,r(i),t.writeLocal&&ee(i),i},[]),l=a.useCallback(o=>{M()&&G(V,re(o))},[]),c=a.useCallback(o=>{const t=w(),i=k(t,n.current)?s(t):n.current,d=O(o(i));if(C(i,d))return;const p=te(t.updatedAt,i.updatedAt),f=s({...d,updatedAt:p},{writeLocal:!0});l(f)},[s,l]),P=a.useCallback(o=>{g.has(o)&&c(t=>({...t,displayMode:o}))},[c]),D=a.useCallback(o=>{if(!g.has(o))return;const t=w();if(t.updatedAt!==void 0){s(t);return}s({...t,displayMode:o,updatedAt:void 0},{writeLocal:!0})},[s]);a.useEffect(()=>{if(!M())return;const o=j(t=>{const i=t?.[V];if(i&&typeof i=="object"){const d=O(i);if(!$()){s(d,{writeLocal:!0});return}const p=w();if(k(d,p))s(d,{writeLocal:!0});else{const f=s(p);oe(d,p)||l(f)}return}D(t?.[F])});return J(),o},[D,s,l]),a.useEffect(()=>{if(typeof window>"u")return;const o=t=>{(t.key===null||L.has(t.key))&&s(w())};return window.addEventListener("storage",o),()=>window.removeEventListener("storage",o)},[s]);const R=a.useCallback(o=>{y.includes(o)&&c(t=>({...t,providerVisibility:{...t.providerVisibility,[o]:!t.providerVisibility[o]}}))},[c]),x=a.useCallback(o=>{c(t=>{const i=t.providerOrder.indexOf(o);if(i<=0)return t;const d=[...t.providerOrder];return[d[i-1],d[i]]=[d[i],d[i-1]],{...t,providerOrder:d}})},[c]),U=a.useCallback(o=>{c(t=>{const i=t.providerOrder.indexOf(o);if(i<0||i>=t.providerOrder.length-1)return t;const d=[...t.providerOrder];return[d[i],d[i+1]]=[d[i+1],d[i]],{...t,providerOrder:d}})},[c]),T=a.useCallback((o,t)=>{o!==t&&c(i=>{const d=i.providerOrder.indexOf(o),p=i.providerOrder.indexOf(t);if(d<0||p<0)return i;const f=[...i.providerOrder],[z]=f.splice(d,1);return f.splice(p,0,z),{...i,providerOrder:f}})},[c]),Y=a.useCallback(()=>{c(()=>({displayMode:v.USED,providerOrder:b(),providerVisibility:I()}))},[c]),K=a.useMemo(()=>e.providerOrder.filter(o=>e.providerVisibility[o]!==!1),[e.providerOrder,e.providerVisibility]);return{order:e.providerOrder,visibility:e.providerVisibility,displayMode:e.displayMode,setDisplayMode:P,visibleOrdered:K,toggle:R,moveUp:x,moveDown:U,moveToward:T,reset:Y}}export{v as L,B as a,se as b,ae as l,ce as u};
@@ -1 +0,0 @@
1
- import{l as d,r as n}from"./__vite-browser-external-CxN2E6q5.js";const u=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],f=d("pencil",u),r="tt.qualityPerDollar.enabled";function o(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(r)==="1"}catch{return!1}}function w(){const[s,l]=n.useState(o);n.useEffect(()=>{if(typeof window>"u")return;const t=e=>{(e.key===null||e.key===r)&&l(o())};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)},[]);const a=n.useCallback(t=>{const e=!!t;l(e);try{window.localStorage.setItem(r,e?"1":"0")}catch{}},[]),c=n.useCallback(()=>a(!o()),[a]);return{enabled:s,setEnabled:a,toggle:c}}export{f as P,w as u};
@@ -1 +0,0 @@
1
- import{a0 as d,a1 as l,a2 as A,r as u,a3 as h,a4 as p,a5 as C,a6 as V,a7 as f}from"./__vite-browser-external-CxN2E6q5.js";function x(...t){const e=!Array.isArray(t[0]),n=e?0:-1,o=t[0+n],s=t[1+n],r=t[2+n],a=t[3+n],c=d(s,r,a);return e?c(o):c}function E(t){const e=l(()=>A(t)),{isStatic:n}=u.useContext(h);if(n){const[,o]=u.useState(t);u.useEffect(()=>e.on("change",o),[])}return e}function m(t,e){const n=E(e()),o=()=>n.set(e());return o(),p(()=>{const s=()=>V.preRender(o,!1,!0),r=t.map(a=>a.on("change",s));return()=>{r.forEach(a=>a()),C(o)}}),n}function L(t){f.current=[],t();const e=m(f.current,t);return f.current=void 0,e}function M(t,e,n,o){if(typeof t=="function")return L(t);const r=typeof e=="function"?e:x(e,n,o),a=Array.isArray(t)?i(t,r):i([t],([y])=>r(y)),c=Array.isArray(t)?void 0:t.accelerate;return c&&!c.isTransformed&&typeof e!="function"&&Array.isArray(n)&&o?.clamp!==!1&&(a.accelerate={...c,times:e,keyframes:n,isTransformed:!0}),a}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{M as a,E as u};
@@ -1 +0,0 @@
1
- import{r as a,p,d as c}from"./__vite-browser-external-CxN2E6q5.js";function v(i){const o=!!i?.initialState,[m,l]=a.useState(()=>o?i?.initialState?.data??null:null),[y,s]=a.useState(()=>o?i?.initialState?.error??null:null),[b,g]=a.useState(!o),u=!!i?.initialRefresh,f=!!i?.publishToPreloadCache,r=a.useCallback((e,t)=>{!f||!e||typeof e!="object"||p(e,{source:t})},[f]),S=a.useCallback(async()=>{try{const e=await c({refresh:!0}),t=e&&typeof e=="object"?e:null;l(t),s(null),r(t,"manual-refresh")}catch(e){s(e?.message||String(e))}},[r]),d=a.useCallback(async()=>{try{const e=await c(),t=e&&typeof e=="object"?e:null;l(t),s(null),r(t,"page-load")}catch(e){s(e?.message||String(e))}},[r]);return a.useEffect(()=>{if(typeof window>"u"||typeof document>"u")return;const e=15e3;let t=Date.now();const n=()=>{if(document.visibilityState!=="visible")return;const h=Date.now();h-t<e||(t=h,d())};return window.addEventListener("focus",n),document.addEventListener("visibilitychange",n),()=>{window.removeEventListener("focus",n),document.removeEventListener("visibilitychange",n)}},[d]),a.useEffect(()=>{if(o&&!u)return;let e=!1;return(async()=>{try{const t=await c();if(e)return;const n=t&&typeof t=="object"?t:null;l(n),s(null),r(n,"page-load")}catch(t){if(e)return;s(t?.message||String(t))}finally{e||g(!1)}})(),()=>{e=!0}},[o,u,r]),{data:m,error:y,isLoading:b,refresh:S}}export{v as u};