cursor-usage-analyzer 0.1.0 → 0.2.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.
- package/.claude/settings.local.json +9 -0
- package/.idea/vcs.xml +5 -0
- package/README.md +104 -7
- package/analyze.js +245 -55
- package/cursor-usage-analyzer-0.2.0.tgz +0 -0
- package/html-template.js +33 -0
- package/package.json +4 -3
- package/team-usage-events-10287858-2025-12-18.csv +600 -0
package/html-template.js
CHANGED
|
@@ -151,6 +151,29 @@ export function generateHTMLReport(stats, dateStr, reportPath) {
|
|
|
151
151
|
<div class="stat-label">Context Tokens</div>
|
|
152
152
|
<div class="stat-sublabel">Ø ${avgTokens.toLocaleString()} per conversation</div>
|
|
153
153
|
</div>
|
|
154
|
+
${stats.totalApiCalls > 0 ? `
|
|
155
|
+
<div class="stat">
|
|
156
|
+
<div class="stat-value">${stats.totalApiTokens.totalTokens.toLocaleString()}</div>
|
|
157
|
+
<div class="stat-label">API Tokens (Total)</div>
|
|
158
|
+
<div class="stat-sublabel">$${stats.totalApiTokens.cost.toFixed(2)} total cost</div>
|
|
159
|
+
</div>
|
|
160
|
+
<div class="stat">
|
|
161
|
+
<div class="stat-value">${stats.totalApiTokens.inputWithCache.toLocaleString()}</div>
|
|
162
|
+
<div class="stat-label">Input (w/ Cache Write)</div>
|
|
163
|
+
</div>
|
|
164
|
+
<div class="stat">
|
|
165
|
+
<div class="stat-value">${stats.totalApiTokens.cacheRead.toLocaleString()}</div>
|
|
166
|
+
<div class="stat-label">Cache Read</div>
|
|
167
|
+
</div>
|
|
168
|
+
<div class="stat">
|
|
169
|
+
<div class="stat-value">${stats.totalApiTokens.outputTokens.toLocaleString()}</div>
|
|
170
|
+
<div class="stat-label">Output Tokens</div>
|
|
171
|
+
</div>
|
|
172
|
+
<div class="stat">
|
|
173
|
+
<div class="stat-value">${stats.totalApiCalls}</div>
|
|
174
|
+
<div class="stat-label">API Calls</div>
|
|
175
|
+
</div>
|
|
176
|
+
` : ''}
|
|
154
177
|
<div class="stat">
|
|
155
178
|
<div class="stat-value">+${stats.totalLinesAdded.toLocaleString()}</div>
|
|
156
179
|
<div class="stat-label">Lines Added</div>
|
|
@@ -235,6 +258,11 @@ export function generateHTMLReport(stats, dateStr, reportPath) {
|
|
|
235
258
|
<th class="sortable" data-column="model" data-type="string">Model</th>
|
|
236
259
|
<th class="sortable" data-column="messages" data-type="number">Messages</th>
|
|
237
260
|
<th class="sortable" data-column="tokens" data-type="number">Context Tokens</th>
|
|
261
|
+
${stats.totalApiCalls > 0 ? `
|
|
262
|
+
<th class="sortable" data-column="apiTokens" data-type="number">API Tokens</th>
|
|
263
|
+
<th class="sortable" data-column="apiCost" data-type="number">Cost</th>
|
|
264
|
+
<th class="sortable" data-column="apiCalls" data-type="number">API Calls</th>
|
|
265
|
+
` : ''}
|
|
238
266
|
<th class="sortable" data-column="linesChanged" data-type="string">Changes</th>
|
|
239
267
|
<th class="sortable" data-column="files" data-type="number">Files</th>
|
|
240
268
|
</tr>
|
|
@@ -248,6 +276,11 @@ export function generateHTMLReport(stats, dateStr, reportPath) {
|
|
|
248
276
|
<td data-value="${c.model}"><small>${c.model}</small></td>
|
|
249
277
|
<td data-value="${c.messages}">${c.messages}</td>
|
|
250
278
|
<td data-value="${c.tokens}"><small>${c.tokens.toLocaleString()} / ${c.contextLimit.toLocaleString()}</small></td>
|
|
279
|
+
${stats.totalApiCalls > 0 ? `
|
|
280
|
+
<td data-value="${c.apiTokens?.totalTokens || 0}"><small>${(c.apiTokens?.totalTokens || 0).toLocaleString()}</small></td>
|
|
281
|
+
<td data-value="${c.apiTokens?.cost || 0}"><small>$${(c.apiTokens?.cost || 0).toFixed(2)}</small></td>
|
|
282
|
+
<td data-value="${c.apiCallCount || 0}">${c.apiCallCount || 0}</td>
|
|
283
|
+
` : ''}
|
|
251
284
|
<td data-value="${c.linesChanged}">${c.linesChanged}</td>
|
|
252
285
|
<td data-value="${c.files}">${c.files}</td>
|
|
253
286
|
</tr>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cursor-usage-analyzer",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Analyze and visualize your Cursor AI editor usage with interactive reports",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Analyze and visualize your Cursor AI editor usage with interactive reports including API token tracking and costs",
|
|
5
5
|
"main": "analyze.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"author": "Daniel Jílek",
|
|
19
19
|
"license": "MIT",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"better-sqlite3": "^9.2.2"
|
|
21
|
+
"better-sqlite3": "^9.2.2",
|
|
22
|
+
"csv-parse": "^5.5.3"
|
|
22
23
|
},
|
|
23
24
|
"repository": {
|
|
24
25
|
"type": "git",
|