tokentracker-cli 0.98.0 → 0.99.0

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 (98) hide show
  1. package/dashboard/dist/assets/{AchievementBadge-DlZklawB.js → AchievementBadge-kRsjlB3p.js} +1 -1
  2. package/dashboard/dist/assets/{AchievementsPage-CprbOKnt.js → AchievementsPage-C3xybY0k.js} +2 -2
  3. package/dashboard/dist/assets/{AchievementsSection-BKLJBRKw.js → AchievementsSection-y5mok2w0.js} +1 -1
  4. package/dashboard/dist/assets/{BadgeDetailModal-CfVXLh_t.js → BadgeDetailModal-IFLXYuKp.js} +1 -1
  5. package/dashboard/dist/assets/{BotAnimated-wzqeGbEY.js → BotAnimated-D6x0PDt2.js} +1 -1
  6. package/dashboard/dist/assets/{Card-B-gcOAn7.js → Card-CiKwEyVu.js} +1 -1
  7. package/dashboard/dist/assets/{ClawdAnimated-1c5ezBBN.js → ClawdAnimated-BQFcAIOy.js} +2 -2
  8. package/dashboard/dist/assets/{CommandPalette-CD8ggEF6.js → CommandPalette-BvpX8PM_.js} +1 -1
  9. package/dashboard/dist/assets/{CommunityStatsModal-b2fPhi1E.js → CommunityStatsModal-D5rNlwfO.js} +1 -1
  10. package/dashboard/dist/assets/{ConfirmModal-ARBkT8AC.js → ConfirmModal-CR0Evu8-.js} +1 -1
  11. package/dashboard/dist/assets/{Controls-WFXDjIYG.js → Controls-lyLUkbJW.js} +1 -1
  12. package/dashboard/dist/assets/{DashboardPage-XtiZa2JN.js → DashboardPage-X8CLr_au.js} +1 -1
  13. package/dashboard/dist/assets/{DevicePage-BCwSpNXa.js → DevicePage-RCIANm45.js} +1 -1
  14. package/dashboard/dist/assets/{DialogClose-D2PE0TAc.js → DialogClose-Bplj_718.js} +1 -1
  15. package/dashboard/dist/assets/DialogDescription-C2EzE7DU.js +1 -0
  16. package/dashboard/dist/assets/{DialogTitle-Bby0zSCw.js → DialogTitle-Ckzf1tdi.js} +1 -1
  17. package/dashboard/dist/assets/{FadeIn-Cx1hl4so.js → FadeIn-C2Jqe95f.js} +1 -1
  18. package/dashboard/dist/assets/{HeaderGithubStar-my4zR6Pp.js → HeaderGithubStar-DgE7Cd5u.js} +1 -1
  19. package/dashboard/dist/assets/{HoverTooltip-DOiGAPLE.js → HoverTooltip-CEmo0N-P.js} +1 -1
  20. package/dashboard/dist/assets/{IpCheckPage-4SdHlFuA.js → IpCheckPage-BwkpsLaF.js} +1 -1
  21. package/dashboard/dist/assets/{LandingPage-bSWc9xiS.js → LandingPage-CA2klwbE.js} +2 -2
  22. package/dashboard/dist/assets/{LeaderboardAvatar-EN4117E5.js → LeaderboardAvatar-B_PUenGZ.js} +1 -1
  23. package/dashboard/dist/assets/{LeaderboardPage-Bwjf-xZl.js → LeaderboardPage-D6HGW3jX.js} +2 -2
  24. package/dashboard/dist/assets/{LeaderboardProfileModal-B1mgVtfP.js → LeaderboardProfileModal-Bfo1dSsS.js} +3 -3
  25. package/dashboard/dist/assets/{LeaderboardProfilePage-DVt5S3lY.js → LeaderboardProfilePage-2OqwrqOs.js} +1 -1
  26. package/dashboard/dist/assets/{LimitsPage-BCXjJE1B.js → LimitsPage-BHrkLXHZ.js} +1 -1
  27. package/dashboard/dist/assets/{LocalOnlyNotice-CzeH4OoJ.js → LocalOnlyNotice-C45MmWYt.js} +1 -1
  28. package/dashboard/dist/assets/{LoginCard-aiqSQInP.js → LoginCard-BikBibax.js} +1 -1
  29. package/dashboard/dist/assets/{LoginModal-DdGKIi8h.js → LoginModal-D0Aq85Zg.js} +1 -1
  30. package/dashboard/dist/assets/{LoginPage-D7xGSoMn.js → LoginPage-B-kQaDQ_.js} +1 -1
  31. package/dashboard/dist/assets/{PetPage-Dlb6rNpF.js → PetPage-ZgPREiwD.js} +1 -1
  32. package/dashboard/dist/assets/{PopoverPopup-Xbruj7Zi.js → PopoverPopup-eQgg3h1i.js} +1 -1
  33. package/dashboard/dist/assets/{ProviderIcon-BPxacBzj.js → ProviderIcon-nDBPxn0N.js} +1 -1
  34. package/dashboard/dist/assets/{ResetPasswordPage-9wgPnLRj.js → ResetPasswordPage-CjsOtiGr.js} +1 -1
  35. package/dashboard/dist/assets/{SegmentedControl-CYFcZFNE.js → SegmentedControl-6NcttkEH.js} +1 -1
  36. package/dashboard/dist/assets/{Select-zpFEMqpk.js → Select-CzEhPICe.js} +1 -1
  37. package/dashboard/dist/assets/{SelectItemText-Bldm5Y0C.js → SelectItemText-BwvzfXwj.js} +1 -1
  38. package/dashboard/dist/assets/{ServiceStatusPage-dgtwFazV.js → ServiceStatusPage-C35wpxrT.js} +1 -1
  39. package/dashboard/dist/assets/{SessionsPage-DHfpv53M.js → SessionsPage-a30adkhf.js} +1 -1
  40. package/dashboard/dist/assets/{SettingsPage-DcGToOT7.js → SettingsPage-C_7ZPBUF.js} +2 -2
  41. package/dashboard/dist/assets/{SkillsPage-DiQDLw2l.js → SkillsPage-DsxkFnrV.js} +1 -1
  42. package/dashboard/dist/assets/{TokenGalaxy-GDx7ftMU.js → TokenGalaxy-D_bXRotA.js} +161 -161
  43. package/dashboard/dist/assets/{ToolbarRootContext-PoCcP2AV.js → ToolbarRootContext-CL7ma7ba.js} +1 -1
  44. package/dashboard/dist/assets/{TrendMonitor-CIfq_yk8.js → TrendMonitor-QZBF2IEY.js} +1 -1
  45. package/dashboard/dist/assets/{WidgetsPage-Dwy-E3Lf.js → WidgetsPage-CWlxR0H-.js} +1 -1
  46. package/dashboard/dist/assets/{WrappedPage-Ce7NV6Ij.js → WrappedPage-D8XQ72nF.js} +1 -1
  47. package/dashboard/dist/assets/{__vite-browser-external-D-WLjvZW.js → __vite-browser-external-CTGqjrCe.js} +2 -2
  48. package/dashboard/dist/assets/{agent-logos-BY8n7b9g.js → agent-logos-BscA25fS.js} +1 -1
  49. package/dashboard/dist/assets/{arrow-up-right-BDiV6Wlk.js → arrow-up-right-DTxCEGbR.js} +1 -1
  50. package/dashboard/dist/assets/{check-Chyo6ujc.js → check-CCEoh2wj.js} +1 -1
  51. package/dashboard/dist/assets/{composite-DgBqMs_Z.js → composite-B2s880f5.js} +1 -1
  52. package/dashboard/dist/assets/{copy-ENRv4pAy.js → copy-CJVQglwG.js} +1 -1
  53. package/dashboard/dist/assets/{download-D3y3gd-z.js → download-Cn-OpYm6.js} +1 -1
  54. package/dashboard/dist/assets/{external-link-VxSAxWnH.js → external-link-BnYlUn56.js} +1 -1
  55. package/dashboard/dist/assets/{flame-CPdTWeRo.js → flame-D4yFLV1L.js} +1 -1
  56. package/dashboard/dist/assets/{format-tokens-BF2G89Q7.js → format-tokens-CBUNbBvp.js} +1 -1
  57. package/dashboard/dist/assets/{icons-D6rfdVyV.js → icons-CcgNgAvb.js} +1 -1
  58. package/dashboard/dist/assets/{index-mzMCUT_4.js → index-CTjeDkbu.js} +1 -1
  59. package/dashboard/dist/assets/{index-4bHcp2Ep.js → index-CkELwUyg.js} +1 -1
  60. package/dashboard/dist/assets/{index-CgmpxGym.js → index-ZWeEKbo-.js} +1 -1
  61. package/dashboard/dist/assets/{info-BMso9PcY.js → info-DoehRSQU.js} +1 -1
  62. package/dashboard/dist/assets/{link-2-Bg34XOcd.js → link-2-D8xSsPqy.js} +1 -1
  63. package/dashboard/dist/assets/{loader-circle-C4Vul1Yx.js → loader-circle-DMu0-X5r.js} +1 -1
  64. package/dashboard/dist/assets/{maximize-2-BBqcwFFo.js → maximize-2-DLyYsZvE.js} +1 -1
  65. package/dashboard/dist/assets/{modifiers.esm-B2F4Iiey.js → modifiers.esm-Dm5Xy2jA.js} +1 -1
  66. package/dashboard/dist/assets/{monitor-smartphone-k1Ja3ngF.js → monitor-smartphone-5uZGQNGJ.js} +1 -1
  67. package/dashboard/dist/assets/{plus-BaCIejxc.js → plus-8fnU0dkt.js} +1 -1
  68. package/dashboard/dist/assets/{provider-display-BYxmO9Bu.js → provider-display-B3ed-pSc.js} +1 -1
  69. package/dashboard/dist/assets/{react-xGx5RIqz.js → react-Gft01KYk.js} +1 -1
  70. package/dashboard/dist/assets/{search-LZQC7j6a.js → search-jqzJg2kG.js} +1 -1
  71. package/dashboard/dist/assets/{skills-api-yLfQkApo.js → skills-api-Bwn_xcHV.js} +1 -1
  72. package/dashboard/dist/assets/{sortable.esm-B8XRHrmA.js → sortable.esm-CYjzLCp7.js} +1 -1
  73. package/dashboard/dist/assets/{store-DfUIKvz3.js → store-CgJHe9jU.js} +1 -1
  74. package/dashboard/dist/assets/{terminal-CsFh6eZS.js → terminal-CZ5j8yEQ.js} +1 -1
  75. package/dashboard/dist/assets/{trash-CVk10mDa.js → trash-DtMLjI_S.js} +1 -1
  76. package/dashboard/dist/assets/{use-community-stats-DP7lJyDV.js → use-community-stats-Px3dHGlR.js} +1 -1
  77. package/dashboard/dist/assets/{use-latest-request-guard-B7uLArxV.js → use-latest-request-guard-B7Vw4Wsd.js} +1 -1
  78. package/dashboard/dist/assets/{use-limits-display-prefs-DG97cWcv.js → use-limits-display-prefs-DWWrcMPi.js} +1 -1
  79. package/dashboard/dist/assets/{use-ordered-list-ChQc2v-Q.js → use-ordered-list-CevbB79U.js} +1 -1
  80. package/dashboard/dist/assets/use-reduced-motion-CCuEY-79.js +1 -0
  81. package/dashboard/dist/assets/{use-session-efficiency-pref-CtF9JAlF.js → use-session-efficiency-pref-DoIaI0vm.js} +1 -1
  82. package/dashboard/dist/assets/{use-transform-DVIBk7FO.js → use-transform-qRwUetOk.js} +1 -1
  83. package/dashboard/dist/assets/{use-usage-limits-BYQuJ9Ud.js → use-usage-limits-DlP7yg78.js} +1 -1
  84. package/dashboard/dist/assets/{useCurrency-CNkzJCP9.js → useCurrency-DRUe8YoY.js} +1 -1
  85. package/dashboard/dist/assets/{useTokenFormat-CU3MtXtS.js → useTokenFormat-CmLbznUC.js} +1 -1
  86. package/dashboard/dist/assets/{zap-D5k595AR.js → zap-CS80c_uN.js} +1 -1
  87. package/dashboard/dist/index.html +1 -1
  88. package/dashboard/dist/ip-check.html +1 -1
  89. package/dashboard/dist/leaderboard.html +1 -1
  90. package/dashboard/dist/share.html +1 -1
  91. package/package.json +1 -1
  92. package/src/lib/cloud-account.js +12 -1
  93. package/src/lib/heatmap-compact.js +114 -0
  94. package/src/lib/local-api.js +11 -10
  95. package/src/lib/pricing/seed-snapshot.json +1 -1
  96. package/src/lib/rollout.js +41 -10
  97. package/dashboard/dist/assets/DialogDescription-5LunWukT.js +0 -1
  98. package/dashboard/dist/assets/use-reduced-motion-BoFF1l9U.js +0 -1
@@ -15821,12 +15821,12 @@ function resolveCraftDefaultModel() {
15821
15821
 
15822
15822
  // Reasonix persists content-free cumulative usage beside each session JSONL.
15823
15823
  // Reading only these telemetry sidecars keeps prompts and tool output private.
15824
- function resolveReasonixHome(env = process.env) {
15824
+ function reasonixHomeCandidates(env = process.env) {
15825
15825
  if (env.TOKENTRACKER_REASONIX_HOME) {
15826
- return expandHomePath(env.TOKENTRACKER_REASONIX_HOME, env);
15826
+ return [expandHomePath(env.TOKENTRACKER_REASONIX_HOME, env)];
15827
15827
  }
15828
15828
  if (env.REASONIX_STATE_HOME) {
15829
- return expandHomePath(env.REASONIX_STATE_HOME, env);
15829
+ return [expandHomePath(env.REASONIX_STATE_HOME, env)];
15830
15830
  }
15831
15831
  // Windows installs of Git Bash / MSYS / conda export a HOME of their own
15832
15832
  // (often a POSIX-shaped path), so preferring it silently sends the scan to a
@@ -15837,26 +15837,57 @@ function resolveReasonixHome(env = process.env) {
15837
15837
  process.platform === "win32"
15838
15838
  ? env.USERPROFILE || env.HOME || require("node:os").homedir()
15839
15839
  : env.HOME || require("node:os").homedir();
15840
- return path.join(home, ".reasonix");
15840
+ const candidates = [path.join(home, ".reasonix")];
15841
+ // On Windows the dot-directory is not where the data lives: Reasonix keeps
15842
+ // sessions and memory under %APPDATA%\reasonix (no leading dot) and only the
15843
+ // cache under %LOCALAPPDATA%. Taking USERPROFILE over a shell HOME was not
15844
+ // enough for #641 because ~/.reasonix does not exist on Windows at all, so
15845
+ // the provider read as "not installed" and vanished from status without a
15846
+ // skipped line. The cache root is deliberately left out.
15847
+ if (process.platform === "win32" && env.APPDATA) {
15848
+ candidates.push(path.join(env.APPDATA, "reasonix"));
15849
+ }
15850
+ return candidates;
15841
15851
  }
15842
15852
 
15843
- function collectReasonixTelemetryFiles(dir, files) {
15853
+ // The home used for "is Reasonix installed" (src/commands/status.js,
15854
+ // src/commands/init.js): the first candidate that exists, else the first, so
15855
+ // the caller still has a path to report.
15856
+ function resolveReasonixHome(env = process.env) {
15857
+ const candidates = reasonixHomeCandidates(env);
15858
+ return candidates.find((dir) => fssync.existsSync(dir)) || candidates[0];
15859
+ }
15860
+
15861
+ // Depth bound because the scan starts at the Reasonix root rather than at two
15862
+ // known subdirectories; it is a guard against a pathological tree, not a layout
15863
+ // assumption. The known layout (projects/<p>/sessions) sits at depth 3.
15864
+ const REASONIX_SCAN_MAX_DEPTH = 8;
15865
+
15866
+ function collectReasonixTelemetryFiles(dir, files, depth = 0) {
15867
+ if (depth > REASONIX_SCAN_MAX_DEPTH) return;
15844
15868
  if (!fssync.existsSync(dir)) return;
15845
15869
  let entries;
15846
15870
  try { entries = fssync.readdirSync(dir, { withFileTypes: true }); } catch { return; }
15847
15871
  for (const entry of entries) {
15848
15872
  const full = path.join(dir, entry.name);
15849
- if (entry.isDirectory()) collectReasonixTelemetryFiles(full, files);
15873
+ if (entry.isDirectory()) collectReasonixTelemetryFiles(full, files, depth + 1);
15850
15874
  else if (entry.isFile() && entry.name.endsWith(".jsonl.telemetry.json")) files.push(full);
15851
15875
  }
15852
15876
  }
15853
15877
 
15854
15878
  function resolveReasonixTelemetryFiles(env = process.env) {
15855
- const reasonixHome = resolveReasonixHome(env);
15879
+ // Recurse from each root instead of from a hardcoded projects/ and sessions/.
15880
+ // The #641 reporter supplied a screenshot of the data location, not a
15881
+ // directory listing, so the layout under %APPDATA%\reasonix is unconfirmed —
15882
+ // and a renamed subdirectory would otherwise cost another release to notice.
15856
15883
  const files = [];
15857
- collectReasonixTelemetryFiles(path.join(reasonixHome, "projects"), files);
15858
- collectReasonixTelemetryFiles(path.join(reasonixHome, "sessions"), files);
15859
- return files.sort((a, b) => a.localeCompare(b));
15884
+ const seenHomes = new Set();
15885
+ for (const home of reasonixHomeCandidates(env)) {
15886
+ if (seenHomes.has(home)) continue;
15887
+ seenHomes.add(home);
15888
+ collectReasonixTelemetryFiles(home, files);
15889
+ }
15890
+ return Array.from(new Set(files)).sort((a, b) => a.localeCompare(b));
15860
15891
  }
15861
15892
 
15862
15893
  function readReasonixSnapshot(filePath) {
@@ -1 +0,0 @@
1
- import{r as n,v as a}from"./__vite-browser-external-D-WLjvZW.js";import{u as p}from"./DialogTitle-Bby0zSCw.js";import{u as c}from"./composite-DgBqMs_Z.js";const x=n.forwardRef(function(e,r){const{render:l,className:u,style:m,id:s,...t}=e,i=p(),o=c(s);return i.useSyncedValueWithCleanup("descriptionElementId",o),a("p",e,{ref:r,props:[{id:o},t]})});export{x as D};
@@ -1 +0,0 @@
1
- import{r as o}from"./__vite-browser-external-D-WLjvZW.js";import{h as r,i as t,p as s}from"./react-xGx5RIqz.js";function i(){!r.current&&t();const[e]=o.useState(s.current);return e}export{i as u};