tokentracker-cli 0.93.6 → 0.94.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 (133) hide show
  1. package/README.de.md +1 -1
  2. package/README.ja.md +1 -1
  3. package/README.ko.md +1 -1
  4. package/README.md +1 -1
  5. package/README.zh-CN.md +1 -1
  6. package/dashboard/dist/assets/{AchievementBadge-DsAclDw6.js → AchievementBadge-DPqwk2zI.js} +1 -1
  7. package/dashboard/dist/assets/{AchievementsPage-D__EwC45.js → AchievementsPage-CELHoMQt.js} +2 -2
  8. package/dashboard/dist/assets/{AchievementsSection-BAZNM3Cn.js → AchievementsSection-DdAC0VCb.js} +1 -1
  9. package/dashboard/dist/assets/BadgeDetailModal-Dd4I1SpM.js +1 -0
  10. package/dashboard/dist/assets/{BotAnimated-CwrScgrI.js → BotAnimated-DL2-4mnm.js} +1 -1
  11. package/dashboard/dist/assets/{Card-D7GmLoqP.js → Card-B_MpSRse.js} +1 -1
  12. package/dashboard/dist/assets/{ClawdAnimated-BEXgb5J_.js → ClawdAnimated-BLZZ4rG6.js} +2 -2
  13. package/dashboard/dist/assets/{CommandPalette-B9Mn3Qt2.js → CommandPalette-B-vfdIbH.js} +1 -1
  14. package/dashboard/dist/assets/CommunityStatsModal-aAico565.js +1 -0
  15. package/dashboard/dist/assets/ConfirmModal-DLnRwUXC.js +1 -0
  16. package/dashboard/dist/assets/{Controls-DxnaHBzv.js → Controls-FZ8wEN5w.js} +1 -1
  17. package/dashboard/dist/assets/DashboardPage-BByRBsbt.js +1 -0
  18. package/dashboard/dist/assets/{DevicePage-4yTYf29M.js → DevicePage-D2IzPc5o.js} +1 -1
  19. package/dashboard/dist/assets/{DialogClose-BbderFCY.js → DialogClose-BaqQaUUk.js} +1 -1
  20. package/dashboard/dist/assets/DialogDescription-BUrh0Jod.js +1 -0
  21. package/dashboard/dist/assets/DialogTitle-DrbKjtuS.js +1 -0
  22. package/dashboard/dist/assets/{FadeIn-BFLojPGG.js → FadeIn-GddKDE8i.js} +1 -1
  23. package/dashboard/dist/assets/{HeaderGithubStar-CPBNn61n.js → HeaderGithubStar-DUu-Z5mE.js} +1 -1
  24. package/dashboard/dist/assets/{HoverTooltip-DbxnLj8e.js → HoverTooltip-BmDkY35A.js} +1 -1
  25. package/dashboard/dist/assets/{IpCheckPage-CfPtXAAF.js → IpCheckPage-CGJyqWk2.js} +1 -1
  26. package/dashboard/dist/assets/{LandingPage-CocswfFj.js → LandingPage-Bd91ALUj.js} +2 -2
  27. package/dashboard/dist/assets/{LeaderboardAvatar-iZLxxZX-.js → LeaderboardAvatar-BGGUwXFd.js} +1 -1
  28. package/dashboard/dist/assets/LeaderboardPage-BMEqHwif.js +2 -0
  29. package/dashboard/dist/assets/{LeaderboardProfileModal-BWu8jbBW.js → LeaderboardProfileModal-BSweJqm2.js} +3 -3
  30. package/dashboard/dist/assets/{LeaderboardProfilePage-B77gOTzr.js → LeaderboardProfilePage-CRrI3RFz.js} +1 -1
  31. package/dashboard/dist/assets/LimitsPage-XIRDv46K.js +5 -0
  32. package/dashboard/dist/assets/LocalOnlyNotice-CCD-lGWG.js +1 -0
  33. package/dashboard/dist/assets/{LoginCard-D592L-fh.js → LoginCard-lDuqSv4f.js} +1 -1
  34. package/dashboard/dist/assets/{LoginModal-C7Qm7CVf.js → LoginModal-DStt5VXN.js} +1 -1
  35. package/dashboard/dist/assets/{LoginPage-DkYw5ZQK.js → LoginPage-dmVPSL72.js} +1 -1
  36. package/dashboard/dist/assets/PetPage-ybcZRctF.js +1 -0
  37. package/dashboard/dist/assets/PopoverPopup-Dar_UjxF.js +1 -0
  38. package/dashboard/dist/assets/{ProviderIcon-d0_vhIkS.js → ProviderIcon-Ct9tILpz.js} +1 -1
  39. package/dashboard/dist/assets/{ResetPasswordPage-UDNlpFVu.js → ResetPasswordPage-B4yLh5zx.js} +1 -1
  40. package/dashboard/dist/assets/SegmentedControl-BOE1CEzq.js +1 -0
  41. package/dashboard/dist/assets/{Select-Z2xTQ55f.js → Select-D-bSh7Zz.js} +1 -1
  42. package/dashboard/dist/assets/SelectItemText-DMYjXXq4.js +1 -0
  43. package/dashboard/dist/assets/{ServiceStatusPage-Cfr-QDZ7.js → ServiceStatusPage-CaleS-6_.js} +1 -1
  44. package/dashboard/dist/assets/SessionsPage-DOaY6_E9.js +2 -0
  45. package/dashboard/dist/assets/SettingsPage-iJH0Yyah.js +2 -0
  46. package/dashboard/dist/assets/SkillsPage-BkzJOBLk.js +1 -0
  47. package/dashboard/dist/assets/{TokenGalaxy-CjAY6rey.js → TokenGalaxy-CuXKoMPg.js} +1 -1
  48. package/dashboard/dist/assets/ToolbarRootContext-Dx5GB7F5.js +1 -0
  49. package/dashboard/dist/assets/{TrendMonitor-DAAlILwJ.js → TrendMonitor-BuKmsznP.js} +1 -1
  50. package/dashboard/dist/assets/WidgetsPage-DUaIyGtu.js +1 -0
  51. package/dashboard/dist/assets/{WrappedPage-ByYzOeZ-.js → WrappedPage-BzqlcAUC.js} +1 -1
  52. package/dashboard/dist/assets/__vite-browser-external-BHz2N7Ih.css +1 -0
  53. package/dashboard/dist/assets/{__vite-browser-external-HdCplPKs.js → __vite-browser-external-CVIGknXl.js} +3 -3
  54. package/dashboard/dist/assets/{agent-logos-BW-ajJ7p.js → agent-logos-BdWWxza6.js} +1 -1
  55. package/dashboard/dist/assets/{arrow-up-right-CA5IJkqo.js → arrow-up-right-CANSzmm-.js} +1 -1
  56. package/dashboard/dist/assets/{check-BBjF3bSm.js → check-BnJpzXRZ.js} +1 -1
  57. package/dashboard/dist/assets/{chevron-right-DCvGp9iJ.js → chevron-right-DJm0mbG0.js} +1 -1
  58. package/dashboard/dist/assets/{useScrollLock-BUVUIPTX.js → composite-Ccj6KQmh.js} +1 -1
  59. package/dashboard/dist/assets/{copy-ahF8LGeu.js → copy-C2Yc8Evu.js} +1 -1
  60. package/dashboard/dist/assets/{download-DBm8dmvt.js → download-B52JTk6Y.js} +1 -1
  61. package/dashboard/dist/assets/{external-link-C1sJSL7J.js → external-link-DayTwZx-.js} +1 -1
  62. package/dashboard/dist/assets/{flame-B6xukEYd.js → flame-B8GEX2yT.js} +1 -1
  63. package/dashboard/dist/assets/{format-tokens-6TqXlT3q.js → format-tokens-mhkbohkb.js} +1 -1
  64. package/dashboard/dist/assets/{icons-pGe_pInY.js → icons-o8bPXqRP.js} +1 -1
  65. package/dashboard/dist/assets/{index-I9O8xChC.js → index-Bp0ZHDtz.js} +1 -1
  66. package/dashboard/dist/assets/{index-Chb8mb2X.js → index-CK_CduLm.js} +1 -1
  67. package/dashboard/dist/assets/{index-RPV0zdZ9.js → index-MBVWUKpA.js} +1 -1
  68. package/dashboard/dist/assets/{info-DBfJv0yu.js → info-D94QM_vX.js} +1 -1
  69. package/dashboard/dist/assets/{limits-providers-DPQsdVq5.js → limits-providers-BLzMyCiy.js} +1 -1
  70. package/dashboard/dist/assets/{link-2-DNEARrPY.js → link-2-CqBmFaDI.js} +1 -1
  71. package/dashboard/dist/assets/{loader-circle-BCFHUr8X.js → loader-circle-SaxUpDR6.js} +1 -1
  72. package/dashboard/dist/assets/{maximize-2-1EmlA2R-.js → maximize-2-BoXqARks.js} +1 -1
  73. package/dashboard/dist/assets/{modifiers.esm-DGXFSuEq.js → modifiers.esm-Conh_-BD.js} +1 -1
  74. package/dashboard/dist/assets/{monitor-smartphone-DsPPhvsT.js → monitor-smartphone-D6qLR9qd.js} +1 -1
  75. package/dashboard/dist/assets/plus-D51mjIc2.js +1 -0
  76. package/dashboard/dist/assets/{provider-display-C20LtBC5.js → provider-display-DpHPjd_s.js} +1 -1
  77. package/dashboard/dist/assets/{react-B4FPJgs_.js → react-D_AcI466.js} +1 -1
  78. package/dashboard/dist/assets/{search-mkIFPKzW.js → search-CwLcNdvZ.js} +1 -1
  79. package/dashboard/dist/assets/{skills-api-D24vlu2H.js → skills-api-Dqi7Mjgo.js} +1 -1
  80. package/dashboard/dist/assets/{sortable.esm-BNDcP0sW.js → sortable.esm-BPDlUxPb.js} +1 -1
  81. package/dashboard/dist/assets/store-ikeRIRGd.js +1 -0
  82. package/dashboard/dist/assets/{terminal-BxVMmvEx.js → terminal-BfeX3L5T.js} +1 -1
  83. package/dashboard/dist/assets/{trash-2-crt9lDvj.js → trash-2-5_Qlp1k7.js} +1 -1
  84. package/dashboard/dist/assets/{use-community-stats-CTB_uHWV.js → use-community-stats-D90Fy2_j.js} +1 -1
  85. package/dashboard/dist/assets/use-limits-display-prefs-D4BYFaa-.js +1 -0
  86. package/dashboard/dist/assets/{use-ordered-list-BVNb5QWU.js → use-ordered-list-DJxLNdXY.js} +1 -1
  87. package/dashboard/dist/assets/use-reduced-motion-yE3T3cat.js +1 -0
  88. package/dashboard/dist/assets/{use-session-efficiency-pref-Di8nY6Lr.js → use-session-efficiency-pref-CAX_GqXc.js} +1 -1
  89. package/dashboard/dist/assets/{use-transform-Dx9C2nBC.js → use-transform-CeW6Z5R0.js} +1 -1
  90. package/dashboard/dist/assets/use-usage-limits-5HP8k9a3.js +1 -0
  91. package/dashboard/dist/assets/{useCurrency-7dkDciam.js → useCurrency-BarGeFyK.js} +1 -1
  92. package/dashboard/dist/assets/{useTokenFormat-DFSIAsAb.js → useTokenFormat-DUJ9iT9H.js} +1 -1
  93. package/dashboard/dist/assets/{zap-Png-VJSP.js → zap--m0IWoI3.js} +1 -1
  94. package/dashboard/dist/index.html +2 -2
  95. package/dashboard/dist/ip-check.html +2 -2
  96. package/dashboard/dist/leaderboard.html +2 -2
  97. package/dashboard/dist/share.html +2 -2
  98. package/package.json +1 -1
  99. package/src/commands/status.js +3 -1
  100. package/src/commands/sync.js +8 -3
  101. package/src/lib/codex-rollout-parser.js +35 -4
  102. package/src/lib/cursor-config.js +182 -1
  103. package/src/lib/fs.js +12 -3
  104. package/src/lib/local-api.js +57 -0
  105. package/src/lib/pricing/seed-snapshot.json +1 -1
  106. package/src/lib/rollout.js +758 -195
  107. package/src/lib/session-analytics.js +205 -10
  108. package/src/lib/subscription-manager.js +293 -0
  109. package/src/lib/telemetry.js +2 -2
  110. package/src/lib/usage-limits.js +55 -14
  111. package/dashboard/dist/assets/BadgeDetailModal-Dgeer5oB.js +0 -1
  112. package/dashboard/dist/assets/CommunityStatsModal-eJ_a1FMd.js +0 -1
  113. package/dashboard/dist/assets/ConfirmModal-CumOr2J1.js +0 -1
  114. package/dashboard/dist/assets/DashboardPage-BpRRXCRr.js +0 -1
  115. package/dashboard/dist/assets/DialogDescription-C5Ujj254.js +0 -1
  116. package/dashboard/dist/assets/DialogTitle-6epeLIn0.js +0 -1
  117. package/dashboard/dist/assets/LeaderboardPage-yqauB4Q1.js +0 -2
  118. package/dashboard/dist/assets/LimitsPage-C9NeIcft.js +0 -5
  119. package/dashboard/dist/assets/LocalOnlyNotice-HPXWU8TT.js +0 -1
  120. package/dashboard/dist/assets/PetPage-BOhvAJp4.js +0 -1
  121. package/dashboard/dist/assets/PopoverPopup-BK9aqQn1.js +0 -1
  122. package/dashboard/dist/assets/SegmentedControl-DE5m1pTf.js +0 -1
  123. package/dashboard/dist/assets/SelectItemText-Daq-XRZg.js +0 -1
  124. package/dashboard/dist/assets/SessionsPage-nHPj6IAt.js +0 -2
  125. package/dashboard/dist/assets/SettingsPage-NvxUG_9m.js +0 -2
  126. package/dashboard/dist/assets/SkillsPage-zFbZa42f.js +0 -1
  127. package/dashboard/dist/assets/ToolbarRootContext-DnC8LT_8.js +0 -1
  128. package/dashboard/dist/assets/WidgetsPage-CXsfi-mq.js +0 -1
  129. package/dashboard/dist/assets/__vite-browser-external-CiR9-j4L.css +0 -1
  130. package/dashboard/dist/assets/store-B2nqaAqP.js +0 -1
  131. package/dashboard/dist/assets/use-limits-display-prefs-DXXZpjGY.js +0 -1
  132. package/dashboard/dist/assets/use-reduced-motion-aSaQtoJu.js +0 -1
  133. package/dashboard/dist/assets/use-usage-limits-D9vQFB1H.js +0 -1
@@ -2880,6 +2880,63 @@ function createLocalApiHandler({ queuePath }) {
2880
2880
  return true;
2881
2881
  }
2882
2882
 
2883
+ // --- subscription manager (manual billing plans, issue #460) ---
2884
+ // User-entered renewal/expiry dates. Local-only store that lives next to
2885
+ // queue.jsonl; distinct from usage-limits window resets and the
2886
+ // auto-detected subscriptions in subscriptions.js.
2887
+ if (p === "/functions/tokentracker-subscription-manager") {
2888
+ const method = String(req.method || "GET").toUpperCase();
2889
+ const manager = require("./subscription-manager");
2890
+ const trackerDir = path.dirname(qp);
2891
+ try {
2892
+ if (method === "GET") {
2893
+ json(res, { subscriptions: await manager.listSubscriptions({ trackerDir }) });
2894
+ return true;
2895
+ }
2896
+ if (method === "POST") {
2897
+ if (!isAuthorizedLocalMutation(req)) {
2898
+ json(res, { ok: false, error: "Unauthorized" }, 401);
2899
+ return true;
2900
+ }
2901
+ const body = await readJsonBody(req);
2902
+ if (body?.action === "create") {
2903
+ json(res, {
2904
+ ok: true,
2905
+ subscription: await manager.createSubscription({
2906
+ trackerDir,
2907
+ fields: body.subscription || body,
2908
+ }),
2909
+ });
2910
+ return true;
2911
+ }
2912
+ if (body?.action === "update") {
2913
+ json(res, {
2914
+ ok: true,
2915
+ subscription: await manager.updateSubscription({
2916
+ trackerDir,
2917
+ id: body.id,
2918
+ fields: body.subscription || body,
2919
+ }),
2920
+ });
2921
+ return true;
2922
+ }
2923
+ if (body?.action === "delete") {
2924
+ json(res, {
2925
+ ok: true,
2926
+ ...(await manager.deleteSubscription({ trackerDir, id: body.id })),
2927
+ });
2928
+ return true;
2929
+ }
2930
+ json(res, { ok: false, error: "Unknown subscription-manager action" }, 400);
2931
+ return true;
2932
+ }
2933
+ json(res, { ok: false, error: "Method Not Allowed" }, 405);
2934
+ } catch (error) {
2935
+ json(res, { ok: false, error: error?.message || "Subscription operation failed" }, 400);
2936
+ }
2937
+ return true;
2938
+ }
2939
+
2883
2940
  // --- skills manager ---
2884
2941
  if (p === "/functions/tokentracker-skills") {
2885
2942
  const method = String(req.method || "GET").toUpperCase();