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.
- package/dashboard/dist/assets/{AchievementBadge-DlZklawB.js → AchievementBadge-kRsjlB3p.js} +1 -1
- package/dashboard/dist/assets/{AchievementsPage-CprbOKnt.js → AchievementsPage-C3xybY0k.js} +2 -2
- package/dashboard/dist/assets/{AchievementsSection-BKLJBRKw.js → AchievementsSection-y5mok2w0.js} +1 -1
- package/dashboard/dist/assets/{BadgeDetailModal-CfVXLh_t.js → BadgeDetailModal-IFLXYuKp.js} +1 -1
- package/dashboard/dist/assets/{BotAnimated-wzqeGbEY.js → BotAnimated-D6x0PDt2.js} +1 -1
- package/dashboard/dist/assets/{Card-B-gcOAn7.js → Card-CiKwEyVu.js} +1 -1
- package/dashboard/dist/assets/{ClawdAnimated-1c5ezBBN.js → ClawdAnimated-BQFcAIOy.js} +2 -2
- package/dashboard/dist/assets/{CommandPalette-CD8ggEF6.js → CommandPalette-BvpX8PM_.js} +1 -1
- package/dashboard/dist/assets/{CommunityStatsModal-b2fPhi1E.js → CommunityStatsModal-D5rNlwfO.js} +1 -1
- package/dashboard/dist/assets/{ConfirmModal-ARBkT8AC.js → ConfirmModal-CR0Evu8-.js} +1 -1
- package/dashboard/dist/assets/{Controls-WFXDjIYG.js → Controls-lyLUkbJW.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-XtiZa2JN.js → DashboardPage-X8CLr_au.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-BCwSpNXa.js → DevicePage-RCIANm45.js} +1 -1
- package/dashboard/dist/assets/{DialogClose-D2PE0TAc.js → DialogClose-Bplj_718.js} +1 -1
- package/dashboard/dist/assets/DialogDescription-C2EzE7DU.js +1 -0
- package/dashboard/dist/assets/{DialogTitle-Bby0zSCw.js → DialogTitle-Ckzf1tdi.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-Cx1hl4so.js → FadeIn-C2Jqe95f.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-my4zR6Pp.js → HeaderGithubStar-DgE7Cd5u.js} +1 -1
- package/dashboard/dist/assets/{HoverTooltip-DOiGAPLE.js → HoverTooltip-CEmo0N-P.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-4SdHlFuA.js → IpCheckPage-BwkpsLaF.js} +1 -1
- package/dashboard/dist/assets/{LandingPage-bSWc9xiS.js → LandingPage-CA2klwbE.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardAvatar-EN4117E5.js → LeaderboardAvatar-B_PUenGZ.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardPage-Bwjf-xZl.js → LeaderboardPage-D6HGW3jX.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardProfileModal-B1mgVtfP.js → LeaderboardProfileModal-Bfo1dSsS.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfilePage-DVt5S3lY.js → LeaderboardProfilePage-2OqwrqOs.js} +1 -1
- package/dashboard/dist/assets/{LimitsPage-BCXjJE1B.js → LimitsPage-BHrkLXHZ.js} +1 -1
- package/dashboard/dist/assets/{LocalOnlyNotice-CzeH4OoJ.js → LocalOnlyNotice-C45MmWYt.js} +1 -1
- package/dashboard/dist/assets/{LoginCard-aiqSQInP.js → LoginCard-BikBibax.js} +1 -1
- package/dashboard/dist/assets/{LoginModal-DdGKIi8h.js → LoginModal-D0Aq85Zg.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-D7xGSoMn.js → LoginPage-B-kQaDQ_.js} +1 -1
- package/dashboard/dist/assets/{PetPage-Dlb6rNpF.js → PetPage-ZgPREiwD.js} +1 -1
- package/dashboard/dist/assets/{PopoverPopup-Xbruj7Zi.js → PopoverPopup-eQgg3h1i.js} +1 -1
- package/dashboard/dist/assets/{ProviderIcon-BPxacBzj.js → ProviderIcon-nDBPxn0N.js} +1 -1
- package/dashboard/dist/assets/{ResetPasswordPage-9wgPnLRj.js → ResetPasswordPage-CjsOtiGr.js} +1 -1
- package/dashboard/dist/assets/{SegmentedControl-CYFcZFNE.js → SegmentedControl-6NcttkEH.js} +1 -1
- package/dashboard/dist/assets/{Select-zpFEMqpk.js → Select-CzEhPICe.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-Bldm5Y0C.js → SelectItemText-BwvzfXwj.js} +1 -1
- package/dashboard/dist/assets/{ServiceStatusPage-dgtwFazV.js → ServiceStatusPage-C35wpxrT.js} +1 -1
- package/dashboard/dist/assets/{SessionsPage-DHfpv53M.js → SessionsPage-a30adkhf.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-DcGToOT7.js → SettingsPage-C_7ZPBUF.js} +2 -2
- package/dashboard/dist/assets/{SkillsPage-DiQDLw2l.js → SkillsPage-DsxkFnrV.js} +1 -1
- package/dashboard/dist/assets/{TokenGalaxy-GDx7ftMU.js → TokenGalaxy-D_bXRotA.js} +161 -161
- package/dashboard/dist/assets/{ToolbarRootContext-PoCcP2AV.js → ToolbarRootContext-CL7ma7ba.js} +1 -1
- package/dashboard/dist/assets/{TrendMonitor-CIfq_yk8.js → TrendMonitor-QZBF2IEY.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-Dwy-E3Lf.js → WidgetsPage-CWlxR0H-.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-Ce7NV6Ij.js → WrappedPage-D8XQ72nF.js} +1 -1
- package/dashboard/dist/assets/{__vite-browser-external-D-WLjvZW.js → __vite-browser-external-CTGqjrCe.js} +2 -2
- package/dashboard/dist/assets/{agent-logos-BY8n7b9g.js → agent-logos-BscA25fS.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-BDiV6Wlk.js → arrow-up-right-DTxCEGbR.js} +1 -1
- package/dashboard/dist/assets/{check-Chyo6ujc.js → check-CCEoh2wj.js} +1 -1
- package/dashboard/dist/assets/{composite-DgBqMs_Z.js → composite-B2s880f5.js} +1 -1
- package/dashboard/dist/assets/{copy-ENRv4pAy.js → copy-CJVQglwG.js} +1 -1
- package/dashboard/dist/assets/{download-D3y3gd-z.js → download-Cn-OpYm6.js} +1 -1
- package/dashboard/dist/assets/{external-link-VxSAxWnH.js → external-link-BnYlUn56.js} +1 -1
- package/dashboard/dist/assets/{flame-CPdTWeRo.js → flame-D4yFLV1L.js} +1 -1
- package/dashboard/dist/assets/{format-tokens-BF2G89Q7.js → format-tokens-CBUNbBvp.js} +1 -1
- package/dashboard/dist/assets/{icons-D6rfdVyV.js → icons-CcgNgAvb.js} +1 -1
- package/dashboard/dist/assets/{index-mzMCUT_4.js → index-CTjeDkbu.js} +1 -1
- package/dashboard/dist/assets/{index-4bHcp2Ep.js → index-CkELwUyg.js} +1 -1
- package/dashboard/dist/assets/{index-CgmpxGym.js → index-ZWeEKbo-.js} +1 -1
- package/dashboard/dist/assets/{info-BMso9PcY.js → info-DoehRSQU.js} +1 -1
- package/dashboard/dist/assets/{link-2-Bg34XOcd.js → link-2-D8xSsPqy.js} +1 -1
- package/dashboard/dist/assets/{loader-circle-C4Vul1Yx.js → loader-circle-DMu0-X5r.js} +1 -1
- package/dashboard/dist/assets/{maximize-2-BBqcwFFo.js → maximize-2-DLyYsZvE.js} +1 -1
- package/dashboard/dist/assets/{modifiers.esm-B2F4Iiey.js → modifiers.esm-Dm5Xy2jA.js} +1 -1
- package/dashboard/dist/assets/{monitor-smartphone-k1Ja3ngF.js → monitor-smartphone-5uZGQNGJ.js} +1 -1
- package/dashboard/dist/assets/{plus-BaCIejxc.js → plus-8fnU0dkt.js} +1 -1
- package/dashboard/dist/assets/{provider-display-BYxmO9Bu.js → provider-display-B3ed-pSc.js} +1 -1
- package/dashboard/dist/assets/{react-xGx5RIqz.js → react-Gft01KYk.js} +1 -1
- package/dashboard/dist/assets/{search-LZQC7j6a.js → search-jqzJg2kG.js} +1 -1
- package/dashboard/dist/assets/{skills-api-yLfQkApo.js → skills-api-Bwn_xcHV.js} +1 -1
- package/dashboard/dist/assets/{sortable.esm-B8XRHrmA.js → sortable.esm-CYjzLCp7.js} +1 -1
- package/dashboard/dist/assets/{store-DfUIKvz3.js → store-CgJHe9jU.js} +1 -1
- package/dashboard/dist/assets/{terminal-CsFh6eZS.js → terminal-CZ5j8yEQ.js} +1 -1
- package/dashboard/dist/assets/{trash-CVk10mDa.js → trash-DtMLjI_S.js} +1 -1
- package/dashboard/dist/assets/{use-community-stats-DP7lJyDV.js → use-community-stats-Px3dHGlR.js} +1 -1
- package/dashboard/dist/assets/{use-latest-request-guard-B7uLArxV.js → use-latest-request-guard-B7Vw4Wsd.js} +1 -1
- package/dashboard/dist/assets/{use-limits-display-prefs-DG97cWcv.js → use-limits-display-prefs-DWWrcMPi.js} +1 -1
- package/dashboard/dist/assets/{use-ordered-list-ChQc2v-Q.js → use-ordered-list-CevbB79U.js} +1 -1
- package/dashboard/dist/assets/use-reduced-motion-CCuEY-79.js +1 -0
- package/dashboard/dist/assets/{use-session-efficiency-pref-CtF9JAlF.js → use-session-efficiency-pref-DoIaI0vm.js} +1 -1
- package/dashboard/dist/assets/{use-transform-DVIBk7FO.js → use-transform-qRwUetOk.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-BYQuJ9Ud.js → use-usage-limits-DlP7yg78.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-CNkzJCP9.js → useCurrency-DRUe8YoY.js} +1 -1
- package/dashboard/dist/assets/{useTokenFormat-CU3MtXtS.js → useTokenFormat-CmLbznUC.js} +1 -1
- package/dashboard/dist/assets/{zap-D5k595AR.js → zap-CS80c_uN.js} +1 -1
- package/dashboard/dist/index.html +1 -1
- package/dashboard/dist/ip-check.html +1 -1
- package/dashboard/dist/leaderboard.html +1 -1
- package/dashboard/dist/share.html +1 -1
- package/package.json +1 -1
- package/src/lib/cloud-account.js +12 -1
- package/src/lib/heatmap-compact.js +114 -0
- package/src/lib/local-api.js +11 -10
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/rollout.js +41 -10
- package/dashboard/dist/assets/DialogDescription-5LunWukT.js +0 -1
- package/dashboard/dist/assets/use-reduced-motion-BoFF1l9U.js +0 -1
package/src/lib/rollout.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
15858
|
-
|
|
15859
|
-
|
|
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};
|