plabtokens 1.0.22 → 1.0.23

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 (181) hide show
  1. package/bin.js +2 -4
  2. package/dist/auth.d.ts +17 -0
  3. package/dist/auth.d.ts.map +1 -0
  4. package/dist/auth.js +162 -0
  5. package/dist/auth.js.map +1 -0
  6. package/dist/cli.d.ts +9 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +1004 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/credentials.d.ts +36 -0
  11. package/dist/credentials.d.ts.map +1 -0
  12. package/dist/credentials.js +109 -0
  13. package/dist/credentials.js.map +1 -0
  14. package/dist/cursor.d.ts +132 -0
  15. package/dist/cursor.d.ts.map +1 -0
  16. package/dist/cursor.js +432 -0
  17. package/dist/cursor.js.map +1 -0
  18. package/dist/graph-types.d.ts +152 -0
  19. package/dist/graph-types.d.ts.map +1 -0
  20. package/dist/graph-types.js +6 -0
  21. package/dist/graph-types.js.map +1 -0
  22. package/dist/native-runner.d.ts +11 -0
  23. package/dist/native-runner.d.ts.map +1 -0
  24. package/dist/native-runner.js +61 -0
  25. package/dist/native-runner.js.map +1 -0
  26. package/dist/native.d.ts +98 -0
  27. package/dist/native.d.ts.map +1 -0
  28. package/dist/native.js +309 -0
  29. package/dist/native.js.map +1 -0
  30. package/dist/sessions/types.d.ts +28 -0
  31. package/dist/sessions/types.d.ts.map +1 -0
  32. package/dist/sessions/types.js +27 -0
  33. package/dist/sessions/types.js.map +1 -0
  34. package/dist/spinner.d.ts +75 -0
  35. package/dist/spinner.d.ts.map +1 -0
  36. package/dist/spinner.js +203 -0
  37. package/dist/spinner.js.map +1 -0
  38. package/dist/submit.d.ts +23 -0
  39. package/dist/submit.d.ts.map +1 -0
  40. package/dist/submit.js +144 -0
  41. package/dist/submit.js.map +1 -0
  42. package/dist/table.d.ts +42 -0
  43. package/dist/table.d.ts.map +1 -0
  44. package/dist/table.js +181 -0
  45. package/dist/table.js.map +1 -0
  46. package/dist/tui/App.d.ts +4 -0
  47. package/dist/tui/App.d.ts.map +1 -0
  48. package/dist/tui/App.js +332 -0
  49. package/dist/tui/App.js.map +1 -0
  50. package/dist/tui/components/BarChart.d.ts +17 -0
  51. package/dist/tui/components/BarChart.d.ts.map +1 -0
  52. package/dist/tui/components/BarChart.js +146 -0
  53. package/dist/tui/components/BarChart.js.map +1 -0
  54. package/dist/tui/components/DailyView.d.ts +13 -0
  55. package/dist/tui/components/DailyView.d.ts.map +1 -0
  56. package/dist/tui/components/DailyView.js +86 -0
  57. package/dist/tui/components/DailyView.js.map +1 -0
  58. package/dist/tui/components/DateBreakdownPanel.d.ts +7 -0
  59. package/dist/tui/components/DateBreakdownPanel.d.ts.map +1 -0
  60. package/dist/tui/components/DateBreakdownPanel.js +36 -0
  61. package/dist/tui/components/DateBreakdownPanel.js.map +1 -0
  62. package/dist/tui/components/Footer.d.ts +28 -0
  63. package/dist/tui/components/Footer.d.ts.map +1 -0
  64. package/dist/tui/components/Footer.js +130 -0
  65. package/dist/tui/components/Footer.js.map +1 -0
  66. package/dist/tui/components/Header.d.ts +9 -0
  67. package/dist/tui/components/Header.d.ts.map +1 -0
  68. package/dist/tui/components/Header.js +20 -0
  69. package/dist/tui/components/Header.js.map +1 -0
  70. package/dist/tui/components/Legend.d.ts +7 -0
  71. package/dist/tui/components/Legend.d.ts.map +1 -0
  72. package/dist/tui/components/Legend.js +16 -0
  73. package/dist/tui/components/Legend.js.map +1 -0
  74. package/dist/tui/components/LoadingSpinner.d.ts +8 -0
  75. package/dist/tui/components/LoadingSpinner.d.ts.map +1 -0
  76. package/dist/tui/components/LoadingSpinner.js +55 -0
  77. package/dist/tui/components/LoadingSpinner.js.map +1 -0
  78. package/dist/tui/components/ModelRow.d.ts +13 -0
  79. package/dist/tui/components/ModelRow.d.ts.map +1 -0
  80. package/dist/tui/components/ModelRow.js +15 -0
  81. package/dist/tui/components/ModelRow.js.map +1 -0
  82. package/dist/tui/components/ModelView.d.ts +13 -0
  83. package/dist/tui/components/ModelView.d.ts.map +1 -0
  84. package/dist/tui/components/ModelView.js +96 -0
  85. package/dist/tui/components/ModelView.js.map +1 -0
  86. package/dist/tui/components/OverviewView.d.ts +14 -0
  87. package/dist/tui/components/OverviewView.d.ts.map +1 -0
  88. package/dist/tui/components/OverviewView.js +65 -0
  89. package/dist/tui/components/OverviewView.js.map +1 -0
  90. package/dist/tui/components/StatsView.d.ts +14 -0
  91. package/dist/tui/components/StatsView.d.ts.map +1 -0
  92. package/dist/tui/components/StatsView.js +102 -0
  93. package/dist/tui/components/StatsView.js.map +1 -0
  94. package/dist/tui/components/TokenBreakdown.d.ts +14 -0
  95. package/dist/tui/components/TokenBreakdown.d.ts.map +1 -0
  96. package/dist/tui/components/TokenBreakdown.js +10 -0
  97. package/dist/tui/components/TokenBreakdown.js.map +1 -0
  98. package/dist/tui/components/index.d.ts +16 -0
  99. package/dist/tui/components/index.d.ts.map +1 -0
  100. package/dist/tui/components/index.js +13 -0
  101. package/dist/tui/components/index.js.map +1 -0
  102. package/dist/tui/config/settings.d.ts +14 -0
  103. package/dist/tui/config/settings.d.ts.map +1 -0
  104. package/dist/tui/config/settings.js +139 -0
  105. package/dist/tui/config/settings.js.map +1 -0
  106. package/dist/tui/config/themes.d.ts +15 -0
  107. package/dist/tui/config/themes.d.ts.map +1 -0
  108. package/dist/tui/config/themes.js +82 -0
  109. package/dist/tui/config/themes.js.map +1 -0
  110. package/dist/tui/hooks/useData.d.ts +17 -0
  111. package/dist/tui/hooks/useData.d.ts.map +1 -0
  112. package/dist/tui/hooks/useData.js +446 -0
  113. package/dist/tui/hooks/useData.js.map +1 -0
  114. package/dist/tui/index.d.ts +4 -0
  115. package/dist/tui/index.d.ts.map +1 -0
  116. package/dist/tui/index.js +36 -0
  117. package/dist/tui/index.js.map +1 -0
  118. package/dist/tui/types/index.d.ts +135 -0
  119. package/dist/tui/types/index.d.ts.map +1 -0
  120. package/dist/tui/types/index.js +23 -0
  121. package/dist/tui/types/index.js.map +1 -0
  122. package/dist/tui/utils/cleanup.d.ts +22 -0
  123. package/dist/tui/utils/cleanup.d.ts.map +1 -0
  124. package/dist/tui/utils/cleanup.js +59 -0
  125. package/dist/tui/utils/cleanup.js.map +1 -0
  126. package/dist/tui/utils/colors.d.ts +19 -0
  127. package/dist/tui/utils/colors.d.ts.map +1 -0
  128. package/dist/tui/utils/colors.js +62 -0
  129. package/dist/tui/utils/colors.js.map +1 -0
  130. package/dist/tui/utils/format.d.ts +7 -0
  131. package/dist/tui/utils/format.d.ts.map +1 -0
  132. package/dist/tui/utils/format.js +45 -0
  133. package/dist/tui/utils/format.js.map +1 -0
  134. package/dist/tui/utils/responsive.d.ts +5 -0
  135. package/dist/tui/utils/responsive.d.ts.map +1 -0
  136. package/dist/tui/utils/responsive.js +5 -0
  137. package/dist/tui/utils/responsive.js.map +1 -0
  138. package/dist/wrapped.d.ts +43 -0
  139. package/dist/wrapped.d.ts.map +1 -0
  140. package/dist/wrapped.js +704 -0
  141. package/dist/wrapped.js.map +1 -0
  142. package/package.json +29 -7
  143. package/src/auth.ts +211 -0
  144. package/src/cli.ts +1242 -0
  145. package/src/credentials.ts +123 -0
  146. package/src/cursor.ts +558 -0
  147. package/src/graph-types.ts +188 -0
  148. package/src/native-runner.js +4 -0
  149. package/src/native-runner.ts +75 -0
  150. package/src/native.ts +652 -0
  151. package/src/sessions/types.ts +59 -0
  152. package/src/spinner.ts +283 -0
  153. package/src/submit.ts +189 -0
  154. package/src/table.ts +233 -0
  155. package/src/tui/App.tsx +433 -0
  156. package/src/tui/components/BarChart.tsx +205 -0
  157. package/src/tui/components/DailyView.tsx +132 -0
  158. package/src/tui/components/DateBreakdownPanel.tsx +79 -0
  159. package/src/tui/components/Footer.tsx +350 -0
  160. package/src/tui/components/Header.tsx +68 -0
  161. package/src/tui/components/Legend.tsx +39 -0
  162. package/src/tui/components/LoadingSpinner.tsx +81 -0
  163. package/src/tui/components/ModelRow.tsx +47 -0
  164. package/src/tui/components/ModelView.tsx +147 -0
  165. package/src/tui/components/OverviewView.tsx +121 -0
  166. package/src/tui/components/StatsView.tsx +249 -0
  167. package/src/tui/components/TokenBreakdown.tsx +46 -0
  168. package/src/tui/components/index.ts +15 -0
  169. package/src/tui/config/settings.ts +172 -0
  170. package/src/tui/config/themes.ts +115 -0
  171. package/src/tui/hooks/useData.ts +532 -0
  172. package/src/tui/index.tsx +44 -0
  173. package/src/tui/opentui.d.ts +166 -0
  174. package/src/tui/types/index.ts +168 -0
  175. package/src/tui/utils/cleanup.ts +65 -0
  176. package/src/tui/utils/colors.ts +72 -0
  177. package/src/tui/utils/format.ts +36 -0
  178. package/src/tui/utils/responsive.ts +8 -0
  179. package/src/types.d.ts +28 -0
  180. package/src/wrapped.ts +832 -0
  181. package/index.js +0 -1
package/bin.js CHANGED
@@ -1,15 +1,13 @@
1
1
  #!/usr/bin/env bun
2
2
  /**
3
- * Alias package for @tokscale/cli.
3
+ * plabtokens CLI entry point.
4
4
  * Requires Bun runtime for OpenTUI's native Zig modules.
5
5
  *
6
6
  * IMPORTANT: Load OpenTUI preload BEFORE importing CLI.
7
- * This registers the Bun plugin for TSX transformation before
8
- * any module resolution that might encounter jsx-runtime imports.
9
7
  */
10
8
  try {
11
9
  await import('@opentui/solid/preload');
12
10
  } catch {
13
11
  // Preload may fail in non-Bun environments or if deps not installed
14
12
  }
15
- await import('@tokscale/cli');
13
+ await import('./dist/cli.js');
package/dist/auth.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * plab CLI Authentication Commands
3
+ * Handles login, logout, and whoami commands
4
+ */
5
+ /**
6
+ * Login command - initiates device flow authentication
7
+ */
8
+ export declare function login(): Promise<void>;
9
+ /**
10
+ * Logout command - clears stored credentials
11
+ */
12
+ export declare function logout(): Promise<void>;
13
+ /**
14
+ * Whoami command - displays current user info
15
+ */
16
+ export declare function whoami(): Promise<void>;
17
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA+BH;;GAEG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA4F3C;AAED;;GAEG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB5C;AAED;;GAEG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAa5C"}
package/dist/auth.js ADDED
@@ -0,0 +1,162 @@
1
+ /**
2
+ * plab CLI Authentication Commands
3
+ * Handles login, logout, and whoami commands
4
+ */
5
+ import pc from "picocolors";
6
+ import * as os from "node:os";
7
+ import { saveCredentials, loadCredentials, clearCredentials, getApiBaseUrl, } from "./credentials.js";
8
+ const MAX_POLL_ATTEMPTS = 180; // 15 minutes max
9
+ /**
10
+ * Login command - initiates device flow authentication
11
+ */
12
+ export async function login() {
13
+ const credentials = loadCredentials();
14
+ if (credentials) {
15
+ console.log(pc.yellow(`\n Already logged in as ${pc.bold(credentials.username)}`));
16
+ console.log(pc.gray(" Run 'plab logout' to sign out first.\n"));
17
+ return;
18
+ }
19
+ const baseUrl = getApiBaseUrl();
20
+ console.log(pc.cyan("\n plab - Login\n"));
21
+ // Step 1: Request device code
22
+ console.log(pc.gray(" Requesting authorization code..."));
23
+ let deviceCodeData;
24
+ try {
25
+ const response = await fetch(`${baseUrl}/api/auth/device`, {
26
+ method: "POST",
27
+ headers: { "Content-Type": "application/json" },
28
+ body: JSON.stringify({ deviceName: getDeviceName() }),
29
+ });
30
+ if (!response.ok) {
31
+ throw new Error(`Server returned ${response.status}`);
32
+ }
33
+ deviceCodeData = await response.json();
34
+ }
35
+ catch (error) {
36
+ console.error(pc.red(`\n Error: Failed to connect to server.`));
37
+ console.error(pc.gray(` ${error.message}\n`));
38
+ process.exit(1);
39
+ }
40
+ // Step 2: Display instructions
41
+ console.log();
42
+ console.log(pc.white(" Open this URL in your browser:"));
43
+ console.log(pc.cyan(` ${deviceCodeData.verificationUrl}\n`));
44
+ console.log(pc.white(" Enter this code:"));
45
+ console.log(pc.bold(pc.green(` ${deviceCodeData.userCode}\n`)));
46
+ // Try to open browser automatically
47
+ await openBrowser(deviceCodeData.verificationUrl);
48
+ console.log(pc.gray(" Waiting for authorization..."));
49
+ // Step 3: Poll for completion
50
+ let attempts = 0;
51
+ const pollInterval = (deviceCodeData.interval || 5) * 1000;
52
+ while (attempts < MAX_POLL_ATTEMPTS) {
53
+ await sleep(pollInterval);
54
+ attempts++;
55
+ try {
56
+ const response = await fetch(`${baseUrl}/api/auth/device/poll`, {
57
+ method: "POST",
58
+ headers: { "Content-Type": "application/json" },
59
+ body: JSON.stringify({ deviceCode: deviceCodeData.deviceCode }),
60
+ });
61
+ const data = await response.json();
62
+ if (data.status === "complete" && data.token && data.user) {
63
+ // Success!
64
+ saveCredentials({
65
+ token: data.token,
66
+ username: data.user.username,
67
+ avatarUrl: data.user.avatarUrl,
68
+ createdAt: new Date().toISOString(),
69
+ });
70
+ console.log(pc.green(`\n Success! Logged in as ${pc.bold(data.user.username)}`));
71
+ console.log(pc.gray(" You can now use 'plab submit' to share your usage.\n"));
72
+ return;
73
+ }
74
+ if (data.status === "expired") {
75
+ console.error(pc.red("\n Authorization code expired. Please try again.\n"));
76
+ process.exit(1);
77
+ }
78
+ // Still pending - show a dot to indicate progress
79
+ process.stdout.write(pc.gray("."));
80
+ }
81
+ catch (error) {
82
+ // Network error - continue polling
83
+ process.stdout.write(pc.red("!"));
84
+ }
85
+ }
86
+ console.error(pc.red("\n\n Timeout: Authorization took too long. Please try again.\n"));
87
+ process.exit(1);
88
+ }
89
+ /**
90
+ * Logout command - clears stored credentials
91
+ */
92
+ export async function logout() {
93
+ const credentials = loadCredentials();
94
+ if (!credentials) {
95
+ console.log(pc.yellow("\n Not logged in.\n"));
96
+ return;
97
+ }
98
+ const username = credentials.username;
99
+ const cleared = clearCredentials();
100
+ if (cleared) {
101
+ console.log(pc.green(`\n Logged out from ${pc.bold(username)}\n`));
102
+ }
103
+ else {
104
+ console.error(pc.red("\n Failed to clear credentials.\n"));
105
+ process.exit(1);
106
+ }
107
+ }
108
+ /**
109
+ * Whoami command - displays current user info
110
+ */
111
+ export async function whoami() {
112
+ const credentials = loadCredentials();
113
+ if (!credentials) {
114
+ console.log(pc.yellow("\n Not logged in."));
115
+ console.log(pc.gray(" Run 'plab login' to authenticate.\n"));
116
+ return;
117
+ }
118
+ console.log(pc.cyan("\n plab - Account Info\n"));
119
+ console.log(pc.white(` Username: ${pc.bold(credentials.username)}`));
120
+ console.log(pc.gray(` Logged in: ${new Date(credentials.createdAt).toLocaleDateString()}`));
121
+ console.log();
122
+ }
123
+ /**
124
+ * Get a device name for the token
125
+ */
126
+ function getDeviceName() {
127
+ return `CLI on ${os.hostname()}`;
128
+ }
129
+ /**
130
+ * Sleep helper
131
+ */
132
+ function sleep(ms) {
133
+ return new Promise((resolve) => setTimeout(resolve, ms));
134
+ }
135
+ /**
136
+ * Try to open browser automatically
137
+ */
138
+ async function openBrowser(url) {
139
+ try {
140
+ const { exec } = await import("node:child_process");
141
+ const platform = process.platform;
142
+ let command;
143
+ if (platform === "darwin") {
144
+ command = `open "${url}"`;
145
+ }
146
+ else if (platform === "win32") {
147
+ command = `start "" "${url}"`;
148
+ }
149
+ else {
150
+ command = `xdg-open "${url}"`;
151
+ }
152
+ exec(command, (error) => {
153
+ if (error) {
154
+ // Silent fail - user can still open manually
155
+ }
156
+ });
157
+ }
158
+ catch {
159
+ // Silent fail
160
+ }
161
+ }
162
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * plab CLI
4
+ * Display OpenCode, Claude Code, Codex, Gemini, and Cursor usage with dynamic width tables
5
+ *
6
+ * All heavy computation is done in the native Rust module.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}