tokentracker-cli 1.0.6 → 1.0.7
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-CaAqGeBX.js → AchievementBadge-BI_HiL08.js} +1 -1
- package/dashboard/dist/assets/{AchievementsPage-BoiTFuxp.js → AchievementsPage-CbK_pV0C.js} +2 -2
- package/dashboard/dist/assets/{AchievementsSection-CYiF0QS1.js → AchievementsSection-DEQycrwd.js} +1 -1
- package/dashboard/dist/assets/{BadgeDetailModal-BH3jTMAq.js → BadgeDetailModal-BdaHueq5.js} +1 -1
- package/dashboard/dist/assets/{BotAnimated-BCn8ladQ.js → BotAnimated-BATn4r97.js} +1 -1
- package/dashboard/dist/assets/{Card-Cf0-OFz3.js → Card-C3_Fzc5V.js} +1 -1
- package/dashboard/dist/assets/{ClawdAnimated-B32inDYq.js → ClawdAnimated-BidgYaVn.js} +2 -2
- package/dashboard/dist/assets/{CommandPalette-BOCXhSoJ.js → CommandPalette-D86_iwFa.js} +1 -1
- package/dashboard/dist/assets/{CommunityStatsModal-wj3ntE0k.js → CommunityStatsModal-CJuy4O88.js} +1 -1
- package/dashboard/dist/assets/{ConfirmModal-BtXy5Tpg.js → ConfirmModal-BaAc5rzt.js} +1 -1
- package/dashboard/dist/assets/{Controls-C6R_k_Yo.js → Controls-Brnf_QJ_.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-3YAD-Ps-.js → DashboardPage-BmW622BX.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-oQdvRuea.js → DevicePage-DDrrY5AJ.js} +1 -1
- package/dashboard/dist/assets/{DialogClose-DGg7gIgR.js → DialogClose-BNcKZCV5.js} +1 -1
- package/dashboard/dist/assets/DialogDescription-CSvbgRdI.js +1 -0
- package/dashboard/dist/assets/{DialogTitle-CRJVqO3Z.js → DialogTitle-DL9AVJvk.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-Bal-Jhbn.js → FadeIn-BYwYqoVv.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-CoxP2fqd.js → HeaderGithubStar-C71yS5fY.js} +1 -1
- package/dashboard/dist/assets/{HoverTooltip-DAQKPLQl.js → HoverTooltip-nJQ-bK5U.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-JbfQR0w5.js → IpCheckPage-CTwXZRZk.js} +1 -1
- package/dashboard/dist/assets/{LandingPage-DjKmw_W1.js → LandingPage--GOHgrB4.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardAvatar-D3jdY9hy.js → LeaderboardAvatar-B7SjpjnT.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardPage-fU-M_RcC.js → LeaderboardPage-BmExdKSM.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardProfileModal-Db_AD0nx.js → LeaderboardProfileModal-C5cQqviO.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfilePage-CQ5kXnPL.js → LeaderboardProfilePage-DJ-09rX6.js} +1 -1
- package/dashboard/dist/assets/{LimitsPage-DSVL32bb.js → LimitsPage-CazL_F1h.js} +1 -1
- package/dashboard/dist/assets/{LocalOnlyNotice-LgNo6vft.js → LocalOnlyNotice-K3aCR52T.js} +1 -1
- package/dashboard/dist/assets/{LoginCard-BwEFa4pX.js → LoginCard-_FbeoBO0.js} +1 -1
- package/dashboard/dist/assets/{LoginModal-rWVKapY3.js → LoginModal-CYXuWlcp.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-DEeIX36-.js → LoginPage-NgvQXPTx.js} +1 -1
- package/dashboard/dist/assets/{PetPage-81XOQqLW.js → PetPage-CQ1aHdDU.js} +1 -1
- package/dashboard/dist/assets/{PopoverPopup-nU1lNHRX.js → PopoverPopup-BH948Enq.js} +1 -1
- package/dashboard/dist/assets/{ProviderIcon-B-OZcL4W.js → ProviderIcon-CTBbzd0x.js} +1 -1
- package/dashboard/dist/assets/{ResetPasswordPage-CV3LLQRl.js → ResetPasswordPage-GCsv0PKq.js} +1 -1
- package/dashboard/dist/assets/{SegmentedControl-DnXK5veD.js → SegmentedControl-D-a1T6Ay.js} +1 -1
- package/dashboard/dist/assets/{Select-CyV3nxTO.js → Select-BuBpeT1X.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-B9WQ2B5j.js → SelectItemText-BJl0lY5n.js} +1 -1
- package/dashboard/dist/assets/{ServiceStatusPage-CjfvzEOn.js → ServiceStatusPage-Xz-rDYxA.js} +1 -1
- package/dashboard/dist/assets/{SessionsPage-BXTr3S8x.js → SessionsPage-BvJjRxbT.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-C-O5617w.js → SettingsPage-CDrrA4Z_.js} +2 -2
- package/dashboard/dist/assets/{SkillsPage-DSc5O7u7.js → SkillsPage-C3YDKdBr.js} +1 -1
- package/dashboard/dist/assets/{TokenGalaxy-DIbAWJfY.js → TokenGalaxy-CwBN1Nw2.js} +1 -1
- package/dashboard/dist/assets/{ToolbarRootContext-B7EwUsvt.js → ToolbarRootContext-2RKWzsAn.js} +1 -1
- package/dashboard/dist/assets/{TrendMonitor-CeTPoZhn.js → TrendMonitor-CrCYxmL5.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-DycR-Xy_.js → WidgetsPage-CdJhuvNK.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-Buz1wzSM.js → WrappedPage-xQN9f_Lg.js} +1 -1
- package/dashboard/dist/assets/{__vite-browser-external-_RSGXjh3.js → __vite-browser-external-CMMzxCk7.js} +2 -2
- package/dashboard/dist/assets/{agent-logos-B0aXIO3B.js → agent-logos-fd9xH1K3.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right--SGPnId4.js → arrow-up-right-DWTEaioI.js} +1 -1
- package/dashboard/dist/assets/{check-CJRaiH3e.js → check-D7d6q9Tz.js} +1 -1
- package/dashboard/dist/assets/{composite-Bwj_AQ49.js → composite-xFyWluZ9.js} +1 -1
- package/dashboard/dist/assets/{copy-DU0cBBCj.js → copy-BlQDmjZB.js} +1 -1
- package/dashboard/dist/assets/{download-1G25F1-l.js → download-CCvNpDTW.js} +1 -1
- package/dashboard/dist/assets/{external-link-BTawmHLx.js → external-link-D3CFEoOU.js} +1 -1
- package/dashboard/dist/assets/{flame-Ck7u_g0N.js → flame-BVD3QAGl.js} +1 -1
- package/dashboard/dist/assets/{format-tokens-mvtbXN0_.js → format-tokens-BeU_fDKc.js} +1 -1
- package/dashboard/dist/assets/{icons-C-vySzFI.js → icons-DT5tCQC8.js} +1 -1
- package/dashboard/dist/assets/{index-Dl_4Ap2z.js → index-7Rxzbfye.js} +1 -1
- package/dashboard/dist/assets/{index-oyq0VRzp.js → index-CB5EF37x.js} +1 -1
- package/dashboard/dist/assets/{index-Bn1BpzgP.js → index-CuRJmltu.js} +1 -1
- package/dashboard/dist/assets/{info-nLiOCn95.js → info-Ct8mnVg8.js} +1 -1
- package/dashboard/dist/assets/{link-2-DqpkQl5I.js → link-2-BkEYcjI7.js} +1 -1
- package/dashboard/dist/assets/{loader-circle-D9Uwv0lk.js → loader-circle-Cwlqvkcz.js} +1 -1
- package/dashboard/dist/assets/{maximize-2-BZqFpymh.js → maximize-2-Bfi31lVA.js} +1 -1
- package/dashboard/dist/assets/{modifiers.esm-D5idO4uG.js → modifiers.esm-DC5Ku6C4.js} +1 -1
- package/dashboard/dist/assets/{monitor-smartphone-wrYSytV5.js → monitor-smartphone-CjsPxNBN.js} +1 -1
- package/dashboard/dist/assets/{plus-Buu86Rru.js → plus-CgM_CX0H.js} +1 -1
- package/dashboard/dist/assets/{provider-display-DMDSBnrj.js → provider-display-TEnGljXd.js} +1 -1
- package/dashboard/dist/assets/{react-Bj8RUcSV.js → react-CwlX45ob.js} +1 -1
- package/dashboard/dist/assets/{search-C8Vcia84.js → search-CKtoGzmW.js} +1 -1
- package/dashboard/dist/assets/{skills-api-B9V7yAcx.js → skills-api-DuBly_gc.js} +1 -1
- package/dashboard/dist/assets/{sortable.esm-BSct19df.js → sortable.esm-BNsp-WHM.js} +1 -1
- package/dashboard/dist/assets/{store-DUbjqECL.js → store-BTs6kZtj.js} +1 -1
- package/dashboard/dist/assets/{terminal-DVzgSayL.js → terminal-DPMN8gR5.js} +1 -1
- package/dashboard/dist/assets/{trash-Bo7xY33E.js → trash-BDR38M5I.js} +1 -1
- package/dashboard/dist/assets/{use-community-stats-BCBvwoBJ.js → use-community-stats-Deg7skO9.js} +1 -1
- package/dashboard/dist/assets/{use-latest-request-guard-Drj2VWM_.js → use-latest-request-guard-Bs2kD7b1.js} +1 -1
- package/dashboard/dist/assets/{use-limits-display-prefs-BGZ8e1eB.js → use-limits-display-prefs-BgdguDzu.js} +1 -1
- package/dashboard/dist/assets/{use-ordered-list-DskYb1p5.js → use-ordered-list-ezT84-W6.js} +1 -1
- package/dashboard/dist/assets/use-reduced-motion-TNdjFH8O.js +1 -0
- package/dashboard/dist/assets/{use-session-efficiency-pref-BbpqWKhz.js → use-session-efficiency-pref-CTxl79WJ.js} +1 -1
- package/dashboard/dist/assets/{use-transform-C4LDbETT.js → use-transform-BpIPybsm.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-Cfx1w2nQ.js → use-usage-limits-ts6E8fNZ.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-fr7T9OGZ.js → useCurrency-e-C23rLv.js} +1 -1
- package/dashboard/dist/assets/{useTokenFormat-DKAbaR7B.js → useTokenFormat-D_LHEY77.js} +1 -1
- package/dashboard/dist/assets/{zap-CqDAEt0Z.js → zap-CjrBTjSn.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/pricing/seed-snapshot.json +1 -1
- package/src/lib/rollout.js +43 -0
- package/dashboard/dist/assets/DialogDescription-BS-3kTZ6.js +0 -1
- package/dashboard/dist/assets/use-reduced-motion-DE2WaiPY.js +0 -1
package/src/lib/rollout.js
CHANGED
|
@@ -55,6 +55,13 @@ const CLAUDE_MEM_OBSERVER_PROJECT_REF =
|
|
|
55
55
|
"https://local.tokentracker/claude-mem/observer-sessions";
|
|
56
56
|
const PROJECT_ABSENT_CONTEXT_RESCAN_MS = 24 * 60 * 60 * 1000;
|
|
57
57
|
const DEFAULT_CODEX_COLD_SKIP_RECENT_DAYS = 2;
|
|
58
|
+
// A rollout keeps its creation date in its name, but Codex appends to a session
|
|
59
|
+
// for as long as it stays open, so a file dated Monday can still be growing on
|
|
60
|
+
// Thursday. Cold files younger than this are stat'ed every sync and re-read when
|
|
61
|
+
// they grew past the cursor (#592); older ones stay stat-free and rely on the
|
|
62
|
+
// daily cold-scan audit, which bounds the per-sync cost on machines with tens of
|
|
63
|
+
// thousands of rollouts.
|
|
64
|
+
const DEFAULT_CODEX_COLD_GROWTH_STAT_DAYS = 30;
|
|
58
65
|
const FILE_METADATA_CONCURRENCY = 32;
|
|
59
66
|
|
|
60
67
|
async function mapConcurrent(items, concurrency, mapper) {
|
|
@@ -701,6 +708,7 @@ async function filterColdCodexRolloutFiles({
|
|
|
701
708
|
auditDue = false,
|
|
702
709
|
nowMs = Date.now(),
|
|
703
710
|
recentDays = DEFAULT_CODEX_COLD_SKIP_RECENT_DAYS,
|
|
711
|
+
growthStatDays = DEFAULT_CODEX_COLD_GROWTH_STAT_DAYS,
|
|
704
712
|
diagnostics = null,
|
|
705
713
|
} = {}) {
|
|
706
714
|
const files = Array.isArray(rolloutFiles) ? rolloutFiles : [];
|
|
@@ -785,6 +793,29 @@ async function filterColdCodexRolloutFiles({
|
|
|
785
793
|
continue;
|
|
786
794
|
}
|
|
787
795
|
|
|
796
|
+
// Neither check below notices an append: the day-level skip keys off the
|
|
797
|
+
// directory stat, which only changes when a file is added or removed, and
|
|
798
|
+
// the cursor offset records how far we read, not how big the file is. A
|
|
799
|
+
// still-open session whose name-date fell out of the active window was
|
|
800
|
+
// therefore skipped without ever being looked at, and its later days only
|
|
801
|
+
// surfaced at the daily audit (#592). Stat recent cold files and keep any
|
|
802
|
+
// that grew past the cursor; the parse resumes from the offset.
|
|
803
|
+
if (isRecentColdRollout(rolloutDate, { nowMs, growthStatDays })) {
|
|
804
|
+
await loadCodexCursorDirectory(filePath);
|
|
805
|
+
if (cursorStoreRestarted) break;
|
|
806
|
+
const readOffset = Number(cursors.files[filePath]?.offset);
|
|
807
|
+
if (Number.isFinite(readOffset) && readOffset > 0) {
|
|
808
|
+
const stat = await fs.stat(filePath).catch(() => null);
|
|
809
|
+
if (syncDiagnostics) {
|
|
810
|
+
syncDiagnostics.cold_growth_stats = Number(syncDiagnostics.cold_growth_stats || 0) + 1;
|
|
811
|
+
}
|
|
812
|
+
if (stat && stat.size > readOffset) {
|
|
813
|
+
out.push(entry);
|
|
814
|
+
continue;
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
|
|
788
819
|
if (await canSkipCodexDirectory(filePath)) {
|
|
789
820
|
skipped += 1;
|
|
790
821
|
continue;
|
|
@@ -842,6 +873,18 @@ async function filterColdCodexRolloutFiles({
|
|
|
842
873
|
return { rolloutFiles: out, skipped, restarted: false };
|
|
843
874
|
}
|
|
844
875
|
|
|
876
|
+
// True when the rollout's name-date (local calendar day) is within
|
|
877
|
+
// `growthStatDays` of now. The date in the name is the session's creation day.
|
|
878
|
+
function isRecentColdRollout(rolloutDate, { nowMs = Date.now(), growthStatDays } = {}) {
|
|
879
|
+
const days = Number(growthStatDays);
|
|
880
|
+
if (!Number.isFinite(days) || days <= 0) return false;
|
|
881
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(String(rolloutDate || ""));
|
|
882
|
+
if (!match) return false;
|
|
883
|
+
const created = new Date(Number(match[1]), Number(match[2]) - 1, Number(match[3])).getTime();
|
|
884
|
+
if (!Number.isFinite(created)) return false;
|
|
885
|
+
return nowMs - created <= days * 24 * 60 * 60 * 1000;
|
|
886
|
+
}
|
|
887
|
+
|
|
845
888
|
function activeCodexRolloutDates(
|
|
846
889
|
rolloutFiles,
|
|
847
890
|
{ nowMs = Date.now(), recentDays = DEFAULT_CODEX_COLD_SKIP_RECENT_DAYS } = {},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as n,v as a}from"./__vite-browser-external-_RSGXjh3.js";import{u as p}from"./DialogTitle-CRJVqO3Z.js";import{u as c}from"./composite-Bwj_AQ49.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-_RSGXjh3.js";import{h as r,i as t,p as s}from"./react-Bj8RUcSV.js";function i(){!r.current&&t();const[e]=o.useState(s.current);return e}export{i as u};
|