tokentracker-cli 0.63.0 → 0.63.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.
- package/dashboard/dist/assets/{ActivityHeatmap-CkJIcWzw.js → ActivityHeatmap-3rWViAnK.js} +1 -1
- package/dashboard/dist/assets/{Card-yLBo3TPK.js → Card-CjtoUN-V.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-kR7KrvS7.js → DashboardPage-C8Zm5caR.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-jh6HO_Sr.js → DevicePage-DWgc0ITo.js} +1 -1
- package/dashboard/dist/assets/{DialogTitle-D9Ik_gvc.js → DialogTitle-BOWoDnVq.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-C4EDHmX4.js → FadeIn-CK1EopuS.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-CJ1KBbIb.js → HeaderGithubStar-C1CldHWg.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-vMPzCKhT.js → IpCheckPage-DKiEo4LO.js} +1 -1
- package/dashboard/dist/assets/{LandingPage-CPXGM_d3.js → LandingPage-BCzXJP9I.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardAvatar-DF8a3ppM.js → LeaderboardAvatar-Dw-KfosP.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardPage-D4SbAwT8.js → LeaderboardPage-XQBrmlgA.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfileModal-BG9JVFBq.js → LeaderboardProfileModal-8xPG0MRj.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardProfilePage-BMd6sNT9.js → LeaderboardProfilePage-DHa73U-g.js} +1 -1
- package/dashboard/dist/assets/{LimitsPage-DukMAnn1.js → LimitsPage-BTF8cZ-P.js} +1 -1
- package/dashboard/dist/assets/{LocalOnlyNotice-DrmW8xfr.js → LocalOnlyNotice-BqLH4XMA.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-3i9PG3UX.js → LoginPage-OZf1-OnV.js} +1 -1
- package/dashboard/dist/assets/{PopoverPopup-BhGTdXgG.js → PopoverPopup-BQ03eBHT.js} +1 -1
- package/dashboard/dist/assets/{ResetPasswordPage-ClHd4Qcj.js → ResetPasswordPage-CqSU4VnK.js} +1 -1
- package/dashboard/dist/assets/{Select-DFu3_H6P.js → Select-C2miulxl.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-fc4n0xEf.js → SelectItemText-CvU6qFNt.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-DYuS-mL2.js → SettingsPage-DYiO30s5.js} +1 -1
- package/dashboard/dist/assets/{SkillsPage-Bq4GiK2C.js → SkillsPage-DKHdur0w.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-DtVlysKw.js → WidgetsPage-Dh_FKo1H.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-BoTb94i8.js → WrappedPage-BIdXJTOA.js} +1 -1
- package/dashboard/dist/assets/{agent-logos-CWH1ZjEy.js → agent-logos-CWBw3t4a.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-Dz-ejaM3.js → arrow-up-right-D1Qv9-hJ.js} +1 -1
- package/dashboard/dist/assets/{download-BwyTu0h1.js → download-9hc1LZwP.js} +1 -1
- package/dashboard/dist/assets/{info-r1_Ohszh.js → info-Bw9sw3vW.js} +1 -1
- package/dashboard/dist/assets/{main-B8THj1x9.js → main-BN1NzjX3.js} +2 -2
- package/dashboard/dist/assets/{pencil-DWftrgh9.js → pencil-C8mN_ljR.js} +1 -1
- package/dashboard/dist/assets/{use-limits-display-prefs-DhH4ucKB.js → use-limits-display-prefs-CpHg_a82.js} +1 -1
- package/dashboard/dist/assets/{use-native-settings-CE-ExJHY.js → use-native-settings-BCMRmnLD.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-BWqgtMqj.js → use-usage-limits-CVu3Jff0.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-Cg2lR7Uw.js → useCurrency-3hjYtt-n.js} +1 -1
- package/dashboard/dist/assets/{useScrollLock-DVYU0_fs.js → useScrollLock-BNfQujzc.js} +1 -1
- package/dashboard/dist/index.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 +44 -6
- package/src/lib/skills-manager.js +2 -2
package/src/lib/rollout.js
CHANGED
|
@@ -147,9 +147,26 @@ async function parseRolloutIncremental({
|
|
|
147
147
|
const key = filePath;
|
|
148
148
|
const prev = cursors.files[key] || null;
|
|
149
149
|
const inode = st.ino || 0;
|
|
150
|
-
const
|
|
151
|
-
const
|
|
152
|
-
const
|
|
150
|
+
const sameInode = prev && prev.inode === inode;
|
|
151
|
+
const prevOffset = sameInode ? prev.offset || 0 : 0;
|
|
152
|
+
const truncated = sameInode && prevOffset > st.size;
|
|
153
|
+
const startOffset = sameInode && !truncated ? prevOffset : 0;
|
|
154
|
+
const lastTotal = sameInode && !truncated ? prev.lastTotal || null : null;
|
|
155
|
+
const lastModel = sameInode && !truncated ? prev.lastModel || null : null;
|
|
156
|
+
|
|
157
|
+
if (!projectEnabled && sameInode && !truncated && startOffset >= st.size) {
|
|
158
|
+
if (cb) {
|
|
159
|
+
cb({
|
|
160
|
+
index: idx + 1,
|
|
161
|
+
total: totalFiles,
|
|
162
|
+
filePath,
|
|
163
|
+
filesProcessed,
|
|
164
|
+
eventsAggregated,
|
|
165
|
+
bucketsQueued: touchedBuckets.size,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
153
170
|
|
|
154
171
|
const projectContext = projectEnabled
|
|
155
172
|
? await resolveProjectContextForFile({
|
|
@@ -165,6 +182,7 @@ async function parseRolloutIncremental({
|
|
|
165
182
|
|
|
166
183
|
const result = await parseRolloutFile({
|
|
167
184
|
filePath,
|
|
185
|
+
fileStat: st,
|
|
168
186
|
startOffset,
|
|
169
187
|
lastTotal,
|
|
170
188
|
lastModel,
|
|
@@ -267,7 +285,24 @@ async function parseClaudeIncremental({
|
|
|
267
285
|
const key = filePath;
|
|
268
286
|
const prev = cursors.files[key] || null;
|
|
269
287
|
const inode = st.ino || 0;
|
|
270
|
-
const
|
|
288
|
+
const sameInode = prev && prev.inode === inode;
|
|
289
|
+
const prevOffset = sameInode ? prev.offset || 0 : 0;
|
|
290
|
+
const truncated = sameInode && prevOffset > st.size;
|
|
291
|
+
const startOffset = sameInode && !truncated ? prevOffset : 0;
|
|
292
|
+
|
|
293
|
+
if (!projectEnabled && sameInode && !truncated && startOffset >= st.size) {
|
|
294
|
+
if (cb) {
|
|
295
|
+
cb({
|
|
296
|
+
index: idx + 1,
|
|
297
|
+
total: totalFiles,
|
|
298
|
+
filePath,
|
|
299
|
+
filesProcessed,
|
|
300
|
+
eventsAggregated,
|
|
301
|
+
bucketsQueued: touchedBuckets.size,
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
271
306
|
|
|
272
307
|
const projectContext = projectEnabled
|
|
273
308
|
? await resolveProjectContextForFile({
|
|
@@ -283,6 +318,7 @@ async function parseClaudeIncremental({
|
|
|
283
318
|
|
|
284
319
|
const result = await parseClaudeFile({
|
|
285
320
|
filePath,
|
|
321
|
+
fileStat: st,
|
|
286
322
|
startOffset,
|
|
287
323
|
hourlyState,
|
|
288
324
|
touchedBuckets,
|
|
@@ -770,6 +806,7 @@ function codexSessionIdFromPath(filePath) {
|
|
|
770
806
|
|
|
771
807
|
async function parseRolloutFile({
|
|
772
808
|
filePath,
|
|
809
|
+
fileStat,
|
|
773
810
|
startOffset,
|
|
774
811
|
lastTotal,
|
|
775
812
|
lastModel,
|
|
@@ -786,7 +823,7 @@ async function parseRolloutFile({
|
|
|
786
823
|
seenCodexEvents,
|
|
787
824
|
sessionId,
|
|
788
825
|
}) {
|
|
789
|
-
const st = await fs.stat(filePath);
|
|
826
|
+
const st = fileStat || (await fs.stat(filePath));
|
|
790
827
|
const endOffset = st.size;
|
|
791
828
|
if (startOffset >= endOffset) {
|
|
792
829
|
return { endOffset, lastTotal, lastModel, eventsAggregated: 0 };
|
|
@@ -926,6 +963,7 @@ async function parseRolloutFile({
|
|
|
926
963
|
|
|
927
964
|
async function parseClaudeFile({
|
|
928
965
|
filePath,
|
|
966
|
+
fileStat,
|
|
929
967
|
startOffset,
|
|
930
968
|
hourlyState,
|
|
931
969
|
touchedBuckets,
|
|
@@ -936,7 +974,7 @@ async function parseClaudeFile({
|
|
|
936
974
|
projectKey,
|
|
937
975
|
seenMessageHashes,
|
|
938
976
|
}) {
|
|
939
|
-
const st = await fs.stat(filePath).catch(() => null);
|
|
977
|
+
const st = fileStat || (await fs.stat(filePath).catch(() => null));
|
|
940
978
|
if (!st || !st.isFile()) return { endOffset: startOffset, eventsAggregated: 0 };
|
|
941
979
|
|
|
942
980
|
const endOffset = st.size;
|
|
@@ -577,8 +577,8 @@ function targetSkillPath(baseDir, directory) {
|
|
|
577
577
|
const targetPath = path.resolve(root, safe);
|
|
578
578
|
if (!pathStrictlyWithin(root, targetPath)) return null;
|
|
579
579
|
try {
|
|
580
|
-
const rootStat = fs.
|
|
581
|
-
if (
|
|
580
|
+
const rootStat = fs.statSync(root);
|
|
581
|
+
if (!rootStat.isDirectory()) return null;
|
|
582
582
|
} catch (e) {
|
|
583
583
|
if (e?.code !== "ENOENT") return null;
|
|
584
584
|
}
|