@versot/vaguspi 0.1.2 → 0.1.3

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/dist/bin.js CHANGED
@@ -448,6 +448,10 @@ function messageToText(message) {
448
448
 
449
449
  // packages/host/engine/dist/usage-stats.js
450
450
  import { SessionManager } from "@earendil-works/pi-coding-agent";
451
+ function dayAt(ts) {
452
+ const d = new Date(ts);
453
+ return new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();
454
+ }
451
455
  async function aggregateUsageStats() {
452
456
  const infos = await SessionManager.listAll();
453
457
  let totalTokens = 0;
@@ -461,11 +465,10 @@ async function aggregateUsageStats() {
461
465
  const activeDates = /* @__PURE__ */ new Set();
462
466
  const DAY = 864e5;
463
467
  const dayMap = /* @__PURE__ */ new Map();
464
- const dayAt = (ts) => Math.floor(ts / DAY);
465
468
  const ensureDay = (day) => {
466
469
  let p = dayMap.get(day);
467
470
  if (!p) {
468
- p = { tokens: 0, messages: 0, sessions: 0, byModel: /* @__PURE__ */ new Map() };
471
+ p = { tokens: 0, messages: 0, sessions: 0, cost: 0, byModel: /* @__PURE__ */ new Map() };
469
472
  dayMap.set(day, p);
470
473
  }
471
474
  return p;
@@ -489,12 +492,13 @@ async function aggregateUsageStats() {
489
492
  if (m.role !== "assistant" || m.usage === void 0)
490
493
  continue;
491
494
  const u = m.usage;
492
- const tokens = typeof u.totalTokens === "number" ? u.totalTokens : Number(u.input ?? 0) + Number(u.output ?? 0) + Number(u.cacheRead ?? 0) + Number(u.cacheWrite ?? 0);
495
+ const tokens = Number(u.input ?? 0) + Number(u.output ?? 0);
493
496
  const cost = typeof u.cost?.total === "number" ? u.cost.total : 0;
494
497
  totalTokens += tokens;
495
498
  totalCost += cost;
496
499
  sessionTokens += tokens;
497
500
  dayPoint.tokens += tokens;
501
+ dayPoint.cost += cost;
498
502
  const key = `${String(m.provider ?? "unknown")}/${String(m.model ?? "unknown")}`;
499
503
  const cur = byModel.get(key) ?? { tokens: 0, cost: 0 };
500
504
  byModel.set(key, { tokens: cur.tokens + tokens, cost: cur.cost + cost });
@@ -513,8 +517,9 @@ async function aggregateUsageStats() {
513
517
  }
514
518
  }
515
519
  const daily = [...dayMap.entries()].toSorted((a, b) => a[0] - b[0]).map(([day, p]) => ({
516
- ts: day * DAY,
520
+ ts: day,
517
521
  tokens: p.tokens,
522
+ cost: p.cost,
518
523
  messages: p.messages,
519
524
  sessions: p.sessions,
520
525
  byModel: Object.fromEntries(p.byModel)
@@ -524,14 +529,14 @@ async function aggregateUsageStats() {
524
529
  let longestStreak = 0;
525
530
  let run = 0;
526
531
  for (let i = 0; i < dates.length; i++) {
527
- run = i === 0 || dates[i] === (dates[i - 1] ?? 0) + 1 ? run + 1 : 1;
532
+ run = i === 0 || dates[i] === (dates[i - 1] ?? 0) + DAY ? run + 1 : 1;
528
533
  if (run > longestStreak)
529
534
  longestStreak = run;
530
535
  }
531
- const today = Math.floor(Date.now() / DAY);
536
+ const today = new Date((/* @__PURE__ */ new Date()).getFullYear(), (/* @__PURE__ */ new Date()).getMonth(), (/* @__PURE__ */ new Date()).getDate()).getTime();
532
537
  let currentStreak = 0;
533
538
  for (let i = dates.length - 1; i >= 0; i--) {
534
- if (dates[i] === today - currentStreak) {
539
+ if (dates[i] === today - currentStreak * DAY) {
535
540
  currentStreak++;
536
541
  } else {
537
542
  break;