ccusage 16.2.5 → 17.0.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/README.md +20 -25
- package/config-schema.json +0 -33
- package/dist/_types-CV6z8-9_.js +583 -0
- package/dist/{calculate-cost-BDqO4yWA.js → calculate-cost-CX9KwEZt.js} +1 -1
- package/dist/calculate-cost.d.ts +1 -4
- package/dist/calculate-cost.js +2 -3
- package/dist/data-loader-DQtk3Va0.js +3733 -0
- package/dist/data-loader-D_hlygEz.d.ts +2307 -0
- package/dist/data-loader.d.ts +1 -2
- package/dist/data-loader.js +3 -5
- package/dist/debug-Bn_uiKiR.js +148 -0
- package/dist/debug.d.ts +8 -0
- package/dist/debug.js +4 -6
- package/dist/index.d.ts +0 -0
- package/dist/index.js +2838 -2065
- package/dist/{logger-wHijzbnK.js → logger-1M8m84B7.js} +179 -74
- package/dist/logger.d.ts +11 -7
- package/dist/logger.js +1 -1
- package/dist/{prompt-DsUFNEY7.js → prompt-BeRmYuGP.js} +49 -28
- package/package.json +4 -4
- package/dist/_token-utils-WjkbrjKv.js +0 -5
- package/dist/_types-DIdtMJ6V.js +0 -3076
- package/dist/data-loader-D1FVB4Lp.d.ts +0 -785
- package/dist/data-loader-abvRdQYo.js +0 -2681
- package/dist/debug-CkCfHFil.js +0 -109
- package/dist/mcp-Dz21qUWi.js +0 -6832
- package/dist/mcp.d.ts +0 -35
- package/dist/mcp.js +0 -8
- package/dist/pricing-fetcher-BtUY4dRM.js +0 -402
- package/dist/pricing-fetcher-DK8lcI1w.d.ts +0 -219
- package/dist/pricing-fetcher.d.ts +0 -2
- package/dist/pricing-fetcher.js +0 -4
|
@@ -1,785 +0,0 @@
|
|
|
1
|
-
import { Bucket, CostMode, PricingFetcher, SortOrder } from "./pricing-fetcher-DK8lcI1w.js";
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
|
|
4
|
-
//#region src/_consts.d.ts
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Days of the week for weekly aggregation
|
|
8
|
-
*/
|
|
9
|
-
declare const WEEK_DAYS: readonly ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"];
|
|
10
|
-
/**
|
|
11
|
-
* Week day names type
|
|
12
|
-
*/
|
|
13
|
-
type WeekDay = typeof WEEK_DAYS[number];
|
|
14
|
-
/**
|
|
15
|
-
* Day of week as number (0 = Sunday, 1 = Monday, ..., 6 = Saturday)
|
|
16
|
-
*/
|
|
17
|
-
//#endregion
|
|
18
|
-
//#region src/_session-blocks.d.ts
|
|
19
|
-
/**
|
|
20
|
-
* Represents a single usage data entry loaded from JSONL files
|
|
21
|
-
*/
|
|
22
|
-
type LoadedUsageEntry = {
|
|
23
|
-
timestamp: Date;
|
|
24
|
-
usage: {
|
|
25
|
-
inputTokens: number;
|
|
26
|
-
outputTokens: number;
|
|
27
|
-
cacheCreationInputTokens: number;
|
|
28
|
-
cacheReadInputTokens: number;
|
|
29
|
-
};
|
|
30
|
-
costUSD: number | null;
|
|
31
|
-
model: string;
|
|
32
|
-
version?: string;
|
|
33
|
-
usageLimitResetTime?: Date; // Claude API usage limit reset time
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* Aggregated token counts for different token types
|
|
37
|
-
*/
|
|
38
|
-
type TokenCounts = {
|
|
39
|
-
inputTokens: number;
|
|
40
|
-
outputTokens: number;
|
|
41
|
-
cacheCreationInputTokens: number;
|
|
42
|
-
cacheReadInputTokens: number;
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* Represents a session block (typically 5-hour billing period) with usage data
|
|
46
|
-
*/
|
|
47
|
-
type SessionBlock = {
|
|
48
|
-
id: string; // ISO string of block start time
|
|
49
|
-
startTime: Date;
|
|
50
|
-
endTime: Date; // startTime + 5 hours (for normal blocks) or gap end time (for gap blocks)
|
|
51
|
-
actualEndTime?: Date; // Last activity in block
|
|
52
|
-
isActive: boolean;
|
|
53
|
-
isGap?: boolean; // True if this is a gap block
|
|
54
|
-
entries: LoadedUsageEntry[];
|
|
55
|
-
tokenCounts: TokenCounts;
|
|
56
|
-
costUSD: number;
|
|
57
|
-
models: string[];
|
|
58
|
-
usageLimitResetTime?: Date; // Claude API usage limit reset time
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* Represents usage burn rate calculations
|
|
62
|
-
*/
|
|
63
|
-
//#endregion
|
|
64
|
-
//#region src/data-loader.d.ts
|
|
65
|
-
/**
|
|
66
|
-
* Get Claude data directories to search for usage data
|
|
67
|
-
* When CLAUDE_CONFIG_DIR is set: uses only those paths
|
|
68
|
-
* When not set: uses default paths (~/.config/claude and ~/.claude)
|
|
69
|
-
* @returns Array of valid Claude data directory paths
|
|
70
|
-
*/
|
|
71
|
-
declare function getClaudePaths(): string[];
|
|
72
|
-
/**
|
|
73
|
-
* Extract project name from Claude JSONL file path
|
|
74
|
-
* @param jsonlPath - Absolute path to JSONL file
|
|
75
|
-
* @returns Project name extracted from path, or "unknown" if malformed
|
|
76
|
-
*/
|
|
77
|
-
declare function extractProjectFromPath(jsonlPath: string): string;
|
|
78
|
-
/**
|
|
79
|
-
* Zod schema for validating Claude usage data from JSONL files
|
|
80
|
-
*/
|
|
81
|
-
declare const usageDataSchema: z.ZodObject<{
|
|
82
|
-
cwd: z.ZodOptional<z.ZodString>;
|
|
83
|
-
sessionId: z.ZodOptional<z.ZodBranded<z.ZodString, "SessionId">>;
|
|
84
|
-
timestamp: z.ZodBranded<z.ZodString, "ISOTimestamp">;
|
|
85
|
-
version: z.ZodOptional<z.ZodBranded<z.ZodString, "Version">>;
|
|
86
|
-
message: z.ZodObject<{
|
|
87
|
-
usage: z.ZodObject<{
|
|
88
|
-
input_tokens: z.ZodNumber;
|
|
89
|
-
output_tokens: z.ZodNumber;
|
|
90
|
-
cache_creation_input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
91
|
-
cache_read_input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
92
|
-
}, "strip", z.ZodTypeAny, {
|
|
93
|
-
input_tokens: number;
|
|
94
|
-
output_tokens: number;
|
|
95
|
-
cache_creation_input_tokens?: number | undefined;
|
|
96
|
-
cache_read_input_tokens?: number | undefined;
|
|
97
|
-
}, {
|
|
98
|
-
input_tokens: number;
|
|
99
|
-
output_tokens: number;
|
|
100
|
-
cache_creation_input_tokens?: number | undefined;
|
|
101
|
-
cache_read_input_tokens?: number | undefined;
|
|
102
|
-
}>;
|
|
103
|
-
model: z.ZodOptional<z.ZodBranded<z.ZodString, "ModelName">>;
|
|
104
|
-
id: z.ZodOptional<z.ZodBranded<z.ZodString, "MessageId">>;
|
|
105
|
-
content: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
106
|
-
text: z.ZodOptional<z.ZodString>;
|
|
107
|
-
}, "strip", z.ZodTypeAny, {
|
|
108
|
-
text?: string | undefined;
|
|
109
|
-
}, {
|
|
110
|
-
text?: string | undefined;
|
|
111
|
-
}>, "many">>;
|
|
112
|
-
}, "strip", z.ZodTypeAny, {
|
|
113
|
-
usage: {
|
|
114
|
-
input_tokens: number;
|
|
115
|
-
output_tokens: number;
|
|
116
|
-
cache_creation_input_tokens?: number | undefined;
|
|
117
|
-
cache_read_input_tokens?: number | undefined;
|
|
118
|
-
};
|
|
119
|
-
model?: (string & z.BRAND<"ModelName">) | undefined;
|
|
120
|
-
id?: (string & z.BRAND<"MessageId">) | undefined;
|
|
121
|
-
content?: {
|
|
122
|
-
text?: string | undefined;
|
|
123
|
-
}[] | undefined;
|
|
124
|
-
}, {
|
|
125
|
-
usage: {
|
|
126
|
-
input_tokens: number;
|
|
127
|
-
output_tokens: number;
|
|
128
|
-
cache_creation_input_tokens?: number | undefined;
|
|
129
|
-
cache_read_input_tokens?: number | undefined;
|
|
130
|
-
};
|
|
131
|
-
model?: string | undefined;
|
|
132
|
-
id?: string | undefined;
|
|
133
|
-
content?: {
|
|
134
|
-
text?: string | undefined;
|
|
135
|
-
}[] | undefined;
|
|
136
|
-
}>;
|
|
137
|
-
costUSD: z.ZodOptional<z.ZodNumber>;
|
|
138
|
-
requestId: z.ZodOptional<z.ZodBranded<z.ZodString, "RequestId">>;
|
|
139
|
-
isApiErrorMessage: z.ZodOptional<z.ZodBoolean>;
|
|
140
|
-
}, "strip", z.ZodTypeAny, {
|
|
141
|
-
cwd?: string | undefined;
|
|
142
|
-
sessionId?: (string & z.BRAND<"SessionId">) | undefined;
|
|
143
|
-
timestamp: string & z.BRAND<"ISOTimestamp">;
|
|
144
|
-
version?: (string & z.BRAND<"Version">) | undefined;
|
|
145
|
-
message: {
|
|
146
|
-
usage: {
|
|
147
|
-
input_tokens: number;
|
|
148
|
-
output_tokens: number;
|
|
149
|
-
cache_creation_input_tokens?: number | undefined;
|
|
150
|
-
cache_read_input_tokens?: number | undefined;
|
|
151
|
-
};
|
|
152
|
-
model?: (string & z.BRAND<"ModelName">) | undefined;
|
|
153
|
-
id?: (string & z.BRAND<"MessageId">) | undefined;
|
|
154
|
-
content?: {
|
|
155
|
-
text?: string | undefined;
|
|
156
|
-
}[] | undefined;
|
|
157
|
-
};
|
|
158
|
-
costUSD?: number | undefined;
|
|
159
|
-
requestId?: (string & z.BRAND<"RequestId">) | undefined;
|
|
160
|
-
isApiErrorMessage?: boolean | undefined;
|
|
161
|
-
}, {
|
|
162
|
-
cwd?: string | undefined;
|
|
163
|
-
sessionId?: string | undefined;
|
|
164
|
-
timestamp: string;
|
|
165
|
-
version?: string | undefined;
|
|
166
|
-
message: {
|
|
167
|
-
usage: {
|
|
168
|
-
input_tokens: number;
|
|
169
|
-
output_tokens: number;
|
|
170
|
-
cache_creation_input_tokens?: number | undefined;
|
|
171
|
-
cache_read_input_tokens?: number | undefined;
|
|
172
|
-
};
|
|
173
|
-
model?: string | undefined;
|
|
174
|
-
id?: string | undefined;
|
|
175
|
-
content?: {
|
|
176
|
-
text?: string | undefined;
|
|
177
|
-
}[] | undefined;
|
|
178
|
-
};
|
|
179
|
-
costUSD?: number | undefined;
|
|
180
|
-
requestId?: string | undefined;
|
|
181
|
-
isApiErrorMessage?: boolean | undefined;
|
|
182
|
-
}>;
|
|
183
|
-
/**
|
|
184
|
-
* Zod schema for transcript usage data from Claude messages
|
|
185
|
-
*/
|
|
186
|
-
declare const transcriptUsageSchema: z.ZodObject<{
|
|
187
|
-
input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
188
|
-
cache_creation_input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
189
|
-
cache_read_input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
190
|
-
output_tokens: z.ZodOptional<z.ZodNumber>;
|
|
191
|
-
}, "strip", z.ZodTypeAny, {
|
|
192
|
-
input_tokens?: number | undefined;
|
|
193
|
-
cache_creation_input_tokens?: number | undefined;
|
|
194
|
-
cache_read_input_tokens?: number | undefined;
|
|
195
|
-
output_tokens?: number | undefined;
|
|
196
|
-
}, {
|
|
197
|
-
input_tokens?: number | undefined;
|
|
198
|
-
cache_creation_input_tokens?: number | undefined;
|
|
199
|
-
cache_read_input_tokens?: number | undefined;
|
|
200
|
-
output_tokens?: number | undefined;
|
|
201
|
-
}>;
|
|
202
|
-
/**
|
|
203
|
-
* Zod schema for transcript message data
|
|
204
|
-
*/
|
|
205
|
-
declare const transcriptMessageSchema: z.ZodObject<{
|
|
206
|
-
type: z.ZodOptional<z.ZodString>;
|
|
207
|
-
message: z.ZodOptional<z.ZodObject<{
|
|
208
|
-
usage: z.ZodOptional<z.ZodObject<{
|
|
209
|
-
input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
210
|
-
cache_creation_input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
211
|
-
cache_read_input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
212
|
-
output_tokens: z.ZodOptional<z.ZodNumber>;
|
|
213
|
-
}, "strip", z.ZodTypeAny, {
|
|
214
|
-
input_tokens?: number | undefined;
|
|
215
|
-
cache_creation_input_tokens?: number | undefined;
|
|
216
|
-
cache_read_input_tokens?: number | undefined;
|
|
217
|
-
output_tokens?: number | undefined;
|
|
218
|
-
}, {
|
|
219
|
-
input_tokens?: number | undefined;
|
|
220
|
-
cache_creation_input_tokens?: number | undefined;
|
|
221
|
-
cache_read_input_tokens?: number | undefined;
|
|
222
|
-
output_tokens?: number | undefined;
|
|
223
|
-
}>>;
|
|
224
|
-
}, "strip", z.ZodTypeAny, {
|
|
225
|
-
usage?: {
|
|
226
|
-
input_tokens?: number | undefined;
|
|
227
|
-
cache_creation_input_tokens?: number | undefined;
|
|
228
|
-
cache_read_input_tokens?: number | undefined;
|
|
229
|
-
output_tokens?: number | undefined;
|
|
230
|
-
} | undefined;
|
|
231
|
-
}, {
|
|
232
|
-
usage?: {
|
|
233
|
-
input_tokens?: number | undefined;
|
|
234
|
-
cache_creation_input_tokens?: number | undefined;
|
|
235
|
-
cache_read_input_tokens?: number | undefined;
|
|
236
|
-
output_tokens?: number | undefined;
|
|
237
|
-
} | undefined;
|
|
238
|
-
}>>;
|
|
239
|
-
}, "strip", z.ZodTypeAny, {
|
|
240
|
-
type?: string | undefined;
|
|
241
|
-
message?: {
|
|
242
|
-
usage?: {
|
|
243
|
-
input_tokens?: number | undefined;
|
|
244
|
-
cache_creation_input_tokens?: number | undefined;
|
|
245
|
-
cache_read_input_tokens?: number | undefined;
|
|
246
|
-
output_tokens?: number | undefined;
|
|
247
|
-
} | undefined;
|
|
248
|
-
} | undefined;
|
|
249
|
-
}, {
|
|
250
|
-
type?: string | undefined;
|
|
251
|
-
message?: {
|
|
252
|
-
usage?: {
|
|
253
|
-
input_tokens?: number | undefined;
|
|
254
|
-
cache_creation_input_tokens?: number | undefined;
|
|
255
|
-
cache_read_input_tokens?: number | undefined;
|
|
256
|
-
output_tokens?: number | undefined;
|
|
257
|
-
} | undefined;
|
|
258
|
-
} | undefined;
|
|
259
|
-
}>;
|
|
260
|
-
/**
|
|
261
|
-
* Type definition for Claude usage data entries from JSONL files
|
|
262
|
-
*/
|
|
263
|
-
type UsageData = z.infer<typeof usageDataSchema>;
|
|
264
|
-
/**
|
|
265
|
-
* Zod schema for model-specific usage breakdown data
|
|
266
|
-
*/
|
|
267
|
-
declare const modelBreakdownSchema: z.ZodObject<{
|
|
268
|
-
modelName: z.ZodBranded<z.ZodString, "ModelName">;
|
|
269
|
-
inputTokens: z.ZodNumber;
|
|
270
|
-
outputTokens: z.ZodNumber;
|
|
271
|
-
cacheCreationTokens: z.ZodNumber;
|
|
272
|
-
cacheReadTokens: z.ZodNumber;
|
|
273
|
-
cost: z.ZodNumber;
|
|
274
|
-
}, "strip", z.ZodTypeAny, {
|
|
275
|
-
modelName: string & z.BRAND<"ModelName">;
|
|
276
|
-
inputTokens: number;
|
|
277
|
-
outputTokens: number;
|
|
278
|
-
cacheCreationTokens: number;
|
|
279
|
-
cacheReadTokens: number;
|
|
280
|
-
cost: number;
|
|
281
|
-
}, {
|
|
282
|
-
modelName: string;
|
|
283
|
-
inputTokens: number;
|
|
284
|
-
outputTokens: number;
|
|
285
|
-
cacheCreationTokens: number;
|
|
286
|
-
cacheReadTokens: number;
|
|
287
|
-
cost: number;
|
|
288
|
-
}>;
|
|
289
|
-
/**
|
|
290
|
-
* Type definition for model-specific usage breakdown
|
|
291
|
-
*/
|
|
292
|
-
type ModelBreakdown = z.infer<typeof modelBreakdownSchema>;
|
|
293
|
-
/**
|
|
294
|
-
* Zod schema for daily usage aggregation data
|
|
295
|
-
*/
|
|
296
|
-
declare const dailyUsageSchema: z.ZodObject<{
|
|
297
|
-
date: z.ZodBranded<z.ZodString, "DailyDate">;
|
|
298
|
-
inputTokens: z.ZodNumber;
|
|
299
|
-
outputTokens: z.ZodNumber;
|
|
300
|
-
cacheCreationTokens: z.ZodNumber;
|
|
301
|
-
cacheReadTokens: z.ZodNumber;
|
|
302
|
-
totalCost: z.ZodNumber;
|
|
303
|
-
modelsUsed: z.ZodArray<z.ZodBranded<z.ZodString, "ModelName">, "many">;
|
|
304
|
-
modelBreakdowns: z.ZodArray<z.ZodObject<{
|
|
305
|
-
modelName: z.ZodBranded<z.ZodString, "ModelName">;
|
|
306
|
-
inputTokens: z.ZodNumber;
|
|
307
|
-
outputTokens: z.ZodNumber;
|
|
308
|
-
cacheCreationTokens: z.ZodNumber;
|
|
309
|
-
cacheReadTokens: z.ZodNumber;
|
|
310
|
-
cost: z.ZodNumber;
|
|
311
|
-
}, "strip", z.ZodTypeAny, {
|
|
312
|
-
modelName: string & z.BRAND<"ModelName">;
|
|
313
|
-
inputTokens: number;
|
|
314
|
-
outputTokens: number;
|
|
315
|
-
cacheCreationTokens: number;
|
|
316
|
-
cacheReadTokens: number;
|
|
317
|
-
cost: number;
|
|
318
|
-
}, {
|
|
319
|
-
modelName: string;
|
|
320
|
-
inputTokens: number;
|
|
321
|
-
outputTokens: number;
|
|
322
|
-
cacheCreationTokens: number;
|
|
323
|
-
cacheReadTokens: number;
|
|
324
|
-
cost: number;
|
|
325
|
-
}>, "many">;
|
|
326
|
-
project: z.ZodOptional<z.ZodString>;
|
|
327
|
-
}, "strip", z.ZodTypeAny, {
|
|
328
|
-
date: string & z.BRAND<"DailyDate">;
|
|
329
|
-
inputTokens: number;
|
|
330
|
-
outputTokens: number;
|
|
331
|
-
cacheCreationTokens: number;
|
|
332
|
-
cacheReadTokens: number;
|
|
333
|
-
totalCost: number;
|
|
334
|
-
modelsUsed: (string & z.BRAND<"ModelName">)[];
|
|
335
|
-
modelBreakdowns: {
|
|
336
|
-
modelName: string & z.BRAND<"ModelName">;
|
|
337
|
-
inputTokens: number;
|
|
338
|
-
outputTokens: number;
|
|
339
|
-
cacheCreationTokens: number;
|
|
340
|
-
cacheReadTokens: number;
|
|
341
|
-
cost: number;
|
|
342
|
-
}[];
|
|
343
|
-
project?: string | undefined;
|
|
344
|
-
}, {
|
|
345
|
-
date: string;
|
|
346
|
-
inputTokens: number;
|
|
347
|
-
outputTokens: number;
|
|
348
|
-
cacheCreationTokens: number;
|
|
349
|
-
cacheReadTokens: number;
|
|
350
|
-
totalCost: number;
|
|
351
|
-
modelsUsed: string[];
|
|
352
|
-
modelBreakdowns: {
|
|
353
|
-
modelName: string;
|
|
354
|
-
inputTokens: number;
|
|
355
|
-
outputTokens: number;
|
|
356
|
-
cacheCreationTokens: number;
|
|
357
|
-
cacheReadTokens: number;
|
|
358
|
-
cost: number;
|
|
359
|
-
}[];
|
|
360
|
-
project?: string | undefined;
|
|
361
|
-
}>;
|
|
362
|
-
/**
|
|
363
|
-
* Type definition for daily usage aggregation
|
|
364
|
-
*/
|
|
365
|
-
type DailyUsage = z.infer<typeof dailyUsageSchema>;
|
|
366
|
-
/**
|
|
367
|
-
* Zod schema for session-based usage aggregation data
|
|
368
|
-
*/
|
|
369
|
-
declare const sessionUsageSchema: z.ZodObject<{
|
|
370
|
-
sessionId: z.ZodBranded<z.ZodString, "SessionId">;
|
|
371
|
-
projectPath: z.ZodBranded<z.ZodString, "ProjectPath">;
|
|
372
|
-
inputTokens: z.ZodNumber;
|
|
373
|
-
outputTokens: z.ZodNumber;
|
|
374
|
-
cacheCreationTokens: z.ZodNumber;
|
|
375
|
-
cacheReadTokens: z.ZodNumber;
|
|
376
|
-
totalCost: z.ZodNumber;
|
|
377
|
-
lastActivity: z.ZodBranded<z.ZodString, "ActivityDate">;
|
|
378
|
-
versions: z.ZodArray<z.ZodBranded<z.ZodString, "Version">, "many">;
|
|
379
|
-
modelsUsed: z.ZodArray<z.ZodBranded<z.ZodString, "ModelName">, "many">;
|
|
380
|
-
modelBreakdowns: z.ZodArray<z.ZodObject<{
|
|
381
|
-
modelName: z.ZodBranded<z.ZodString, "ModelName">;
|
|
382
|
-
inputTokens: z.ZodNumber;
|
|
383
|
-
outputTokens: z.ZodNumber;
|
|
384
|
-
cacheCreationTokens: z.ZodNumber;
|
|
385
|
-
cacheReadTokens: z.ZodNumber;
|
|
386
|
-
cost: z.ZodNumber;
|
|
387
|
-
}, "strip", z.ZodTypeAny, {
|
|
388
|
-
modelName: string & z.BRAND<"ModelName">;
|
|
389
|
-
inputTokens: number;
|
|
390
|
-
outputTokens: number;
|
|
391
|
-
cacheCreationTokens: number;
|
|
392
|
-
cacheReadTokens: number;
|
|
393
|
-
cost: number;
|
|
394
|
-
}, {
|
|
395
|
-
modelName: string;
|
|
396
|
-
inputTokens: number;
|
|
397
|
-
outputTokens: number;
|
|
398
|
-
cacheCreationTokens: number;
|
|
399
|
-
cacheReadTokens: number;
|
|
400
|
-
cost: number;
|
|
401
|
-
}>, "many">;
|
|
402
|
-
}, "strip", z.ZodTypeAny, {
|
|
403
|
-
sessionId: string & z.BRAND<"SessionId">;
|
|
404
|
-
projectPath: string & z.BRAND<"ProjectPath">;
|
|
405
|
-
inputTokens: number;
|
|
406
|
-
outputTokens: number;
|
|
407
|
-
cacheCreationTokens: number;
|
|
408
|
-
cacheReadTokens: number;
|
|
409
|
-
totalCost: number;
|
|
410
|
-
lastActivity: string & z.BRAND<"ActivityDate">;
|
|
411
|
-
versions: (string & z.BRAND<"Version">)[];
|
|
412
|
-
modelsUsed: (string & z.BRAND<"ModelName">)[];
|
|
413
|
-
modelBreakdowns: {
|
|
414
|
-
modelName: string & z.BRAND<"ModelName">;
|
|
415
|
-
inputTokens: number;
|
|
416
|
-
outputTokens: number;
|
|
417
|
-
cacheCreationTokens: number;
|
|
418
|
-
cacheReadTokens: number;
|
|
419
|
-
cost: number;
|
|
420
|
-
}[];
|
|
421
|
-
}, {
|
|
422
|
-
sessionId: string;
|
|
423
|
-
projectPath: string;
|
|
424
|
-
inputTokens: number;
|
|
425
|
-
outputTokens: number;
|
|
426
|
-
cacheCreationTokens: number;
|
|
427
|
-
cacheReadTokens: number;
|
|
428
|
-
totalCost: number;
|
|
429
|
-
lastActivity: string;
|
|
430
|
-
versions: string[];
|
|
431
|
-
modelsUsed: string[];
|
|
432
|
-
modelBreakdowns: {
|
|
433
|
-
modelName: string;
|
|
434
|
-
inputTokens: number;
|
|
435
|
-
outputTokens: number;
|
|
436
|
-
cacheCreationTokens: number;
|
|
437
|
-
cacheReadTokens: number;
|
|
438
|
-
cost: number;
|
|
439
|
-
}[];
|
|
440
|
-
}>;
|
|
441
|
-
/**
|
|
442
|
-
* Type definition for session-based usage aggregation
|
|
443
|
-
*/
|
|
444
|
-
type SessionUsage = z.infer<typeof sessionUsageSchema>;
|
|
445
|
-
/**
|
|
446
|
-
* Zod schema for monthly usage aggregation data
|
|
447
|
-
*/
|
|
448
|
-
declare const monthlyUsageSchema: z.ZodObject<{
|
|
449
|
-
month: z.ZodBranded<z.ZodString, "MonthlyDate">;
|
|
450
|
-
inputTokens: z.ZodNumber;
|
|
451
|
-
outputTokens: z.ZodNumber;
|
|
452
|
-
cacheCreationTokens: z.ZodNumber;
|
|
453
|
-
cacheReadTokens: z.ZodNumber;
|
|
454
|
-
totalCost: z.ZodNumber;
|
|
455
|
-
modelsUsed: z.ZodArray<z.ZodBranded<z.ZodString, "ModelName">, "many">;
|
|
456
|
-
modelBreakdowns: z.ZodArray<z.ZodObject<{
|
|
457
|
-
modelName: z.ZodBranded<z.ZodString, "ModelName">;
|
|
458
|
-
inputTokens: z.ZodNumber;
|
|
459
|
-
outputTokens: z.ZodNumber;
|
|
460
|
-
cacheCreationTokens: z.ZodNumber;
|
|
461
|
-
cacheReadTokens: z.ZodNumber;
|
|
462
|
-
cost: z.ZodNumber;
|
|
463
|
-
}, "strip", z.ZodTypeAny, {
|
|
464
|
-
modelName: string & z.BRAND<"ModelName">;
|
|
465
|
-
inputTokens: number;
|
|
466
|
-
outputTokens: number;
|
|
467
|
-
cacheCreationTokens: number;
|
|
468
|
-
cacheReadTokens: number;
|
|
469
|
-
cost: number;
|
|
470
|
-
}, {
|
|
471
|
-
modelName: string;
|
|
472
|
-
inputTokens: number;
|
|
473
|
-
outputTokens: number;
|
|
474
|
-
cacheCreationTokens: number;
|
|
475
|
-
cacheReadTokens: number;
|
|
476
|
-
cost: number;
|
|
477
|
-
}>, "many">;
|
|
478
|
-
project: z.ZodOptional<z.ZodString>;
|
|
479
|
-
}, "strip", z.ZodTypeAny, {
|
|
480
|
-
month: string & z.BRAND<"MonthlyDate">;
|
|
481
|
-
inputTokens: number;
|
|
482
|
-
outputTokens: number;
|
|
483
|
-
cacheCreationTokens: number;
|
|
484
|
-
cacheReadTokens: number;
|
|
485
|
-
totalCost: number;
|
|
486
|
-
modelsUsed: (string & z.BRAND<"ModelName">)[];
|
|
487
|
-
modelBreakdowns: {
|
|
488
|
-
modelName: string & z.BRAND<"ModelName">;
|
|
489
|
-
inputTokens: number;
|
|
490
|
-
outputTokens: number;
|
|
491
|
-
cacheCreationTokens: number;
|
|
492
|
-
cacheReadTokens: number;
|
|
493
|
-
cost: number;
|
|
494
|
-
}[];
|
|
495
|
-
project?: string | undefined;
|
|
496
|
-
}, {
|
|
497
|
-
month: string;
|
|
498
|
-
inputTokens: number;
|
|
499
|
-
outputTokens: number;
|
|
500
|
-
cacheCreationTokens: number;
|
|
501
|
-
cacheReadTokens: number;
|
|
502
|
-
totalCost: number;
|
|
503
|
-
modelsUsed: string[];
|
|
504
|
-
modelBreakdowns: {
|
|
505
|
-
modelName: string;
|
|
506
|
-
inputTokens: number;
|
|
507
|
-
outputTokens: number;
|
|
508
|
-
cacheCreationTokens: number;
|
|
509
|
-
cacheReadTokens: number;
|
|
510
|
-
cost: number;
|
|
511
|
-
}[];
|
|
512
|
-
project?: string | undefined;
|
|
513
|
-
}>;
|
|
514
|
-
/**
|
|
515
|
-
* Type definition for monthly usage aggregation
|
|
516
|
-
*/
|
|
517
|
-
type MonthlyUsage = z.infer<typeof monthlyUsageSchema>;
|
|
518
|
-
/**
|
|
519
|
-
* Zod schema for weekly usage aggregation data
|
|
520
|
-
*/
|
|
521
|
-
declare const weeklyUsageSchema: z.ZodObject<{
|
|
522
|
-
week: z.ZodBranded<z.ZodString, "WeeklyDate">;
|
|
523
|
-
inputTokens: z.ZodNumber;
|
|
524
|
-
outputTokens: z.ZodNumber;
|
|
525
|
-
cacheCreationTokens: z.ZodNumber;
|
|
526
|
-
cacheReadTokens: z.ZodNumber;
|
|
527
|
-
totalCost: z.ZodNumber;
|
|
528
|
-
modelsUsed: z.ZodArray<z.ZodBranded<z.ZodString, "ModelName">, "many">;
|
|
529
|
-
modelBreakdowns: z.ZodArray<z.ZodObject<{
|
|
530
|
-
modelName: z.ZodBranded<z.ZodString, "ModelName">;
|
|
531
|
-
inputTokens: z.ZodNumber;
|
|
532
|
-
outputTokens: z.ZodNumber;
|
|
533
|
-
cacheCreationTokens: z.ZodNumber;
|
|
534
|
-
cacheReadTokens: z.ZodNumber;
|
|
535
|
-
cost: z.ZodNumber;
|
|
536
|
-
}, "strip", z.ZodTypeAny, {
|
|
537
|
-
modelName: string & z.BRAND<"ModelName">;
|
|
538
|
-
inputTokens: number;
|
|
539
|
-
outputTokens: number;
|
|
540
|
-
cacheCreationTokens: number;
|
|
541
|
-
cacheReadTokens: number;
|
|
542
|
-
cost: number;
|
|
543
|
-
}, {
|
|
544
|
-
modelName: string;
|
|
545
|
-
inputTokens: number;
|
|
546
|
-
outputTokens: number;
|
|
547
|
-
cacheCreationTokens: number;
|
|
548
|
-
cacheReadTokens: number;
|
|
549
|
-
cost: number;
|
|
550
|
-
}>, "many">;
|
|
551
|
-
project: z.ZodOptional<z.ZodString>;
|
|
552
|
-
}, "strip", z.ZodTypeAny, {
|
|
553
|
-
week: string & z.BRAND<"WeeklyDate">;
|
|
554
|
-
inputTokens: number;
|
|
555
|
-
outputTokens: number;
|
|
556
|
-
cacheCreationTokens: number;
|
|
557
|
-
cacheReadTokens: number;
|
|
558
|
-
totalCost: number;
|
|
559
|
-
modelsUsed: (string & z.BRAND<"ModelName">)[];
|
|
560
|
-
modelBreakdowns: {
|
|
561
|
-
modelName: string & z.BRAND<"ModelName">;
|
|
562
|
-
inputTokens: number;
|
|
563
|
-
outputTokens: number;
|
|
564
|
-
cacheCreationTokens: number;
|
|
565
|
-
cacheReadTokens: number;
|
|
566
|
-
cost: number;
|
|
567
|
-
}[];
|
|
568
|
-
project?: string | undefined;
|
|
569
|
-
}, {
|
|
570
|
-
week: string;
|
|
571
|
-
inputTokens: number;
|
|
572
|
-
outputTokens: number;
|
|
573
|
-
cacheCreationTokens: number;
|
|
574
|
-
cacheReadTokens: number;
|
|
575
|
-
totalCost: number;
|
|
576
|
-
modelsUsed: string[];
|
|
577
|
-
modelBreakdowns: {
|
|
578
|
-
modelName: string;
|
|
579
|
-
inputTokens: number;
|
|
580
|
-
outputTokens: number;
|
|
581
|
-
cacheCreationTokens: number;
|
|
582
|
-
cacheReadTokens: number;
|
|
583
|
-
cost: number;
|
|
584
|
-
}[];
|
|
585
|
-
project?: string | undefined;
|
|
586
|
-
}>;
|
|
587
|
-
/**
|
|
588
|
-
* Type definition for weekly usage aggregation
|
|
589
|
-
*/
|
|
590
|
-
type WeeklyUsage = z.infer<typeof weeklyUsageSchema>;
|
|
591
|
-
/**
|
|
592
|
-
* Zod schema for bucket usage aggregation data
|
|
593
|
-
*/
|
|
594
|
-
declare const bucketUsageSchema: z.ZodObject<{
|
|
595
|
-
bucket: z.ZodUnion<[z.ZodBranded<z.ZodString, "WeeklyDate">, z.ZodBranded<z.ZodString, "MonthlyDate">]>;
|
|
596
|
-
inputTokens: z.ZodNumber;
|
|
597
|
-
outputTokens: z.ZodNumber;
|
|
598
|
-
cacheCreationTokens: z.ZodNumber;
|
|
599
|
-
cacheReadTokens: z.ZodNumber;
|
|
600
|
-
totalCost: z.ZodNumber;
|
|
601
|
-
modelsUsed: z.ZodArray<z.ZodBranded<z.ZodString, "ModelName">, "many">;
|
|
602
|
-
modelBreakdowns: z.ZodArray<z.ZodObject<{
|
|
603
|
-
modelName: z.ZodBranded<z.ZodString, "ModelName">;
|
|
604
|
-
inputTokens: z.ZodNumber;
|
|
605
|
-
outputTokens: z.ZodNumber;
|
|
606
|
-
cacheCreationTokens: z.ZodNumber;
|
|
607
|
-
cacheReadTokens: z.ZodNumber;
|
|
608
|
-
cost: z.ZodNumber;
|
|
609
|
-
}, "strip", z.ZodTypeAny, {
|
|
610
|
-
modelName: string & z.BRAND<"ModelName">;
|
|
611
|
-
inputTokens: number;
|
|
612
|
-
outputTokens: number;
|
|
613
|
-
cacheCreationTokens: number;
|
|
614
|
-
cacheReadTokens: number;
|
|
615
|
-
cost: number;
|
|
616
|
-
}, {
|
|
617
|
-
modelName: string;
|
|
618
|
-
inputTokens: number;
|
|
619
|
-
outputTokens: number;
|
|
620
|
-
cacheCreationTokens: number;
|
|
621
|
-
cacheReadTokens: number;
|
|
622
|
-
cost: number;
|
|
623
|
-
}>, "many">;
|
|
624
|
-
project: z.ZodOptional<z.ZodString>;
|
|
625
|
-
}, "strip", z.ZodTypeAny, {
|
|
626
|
-
bucket: (string & z.BRAND<"MonthlyDate">) | (string & z.BRAND<"WeeklyDate">);
|
|
627
|
-
inputTokens: number;
|
|
628
|
-
outputTokens: number;
|
|
629
|
-
cacheCreationTokens: number;
|
|
630
|
-
cacheReadTokens: number;
|
|
631
|
-
totalCost: number;
|
|
632
|
-
modelsUsed: (string & z.BRAND<"ModelName">)[];
|
|
633
|
-
modelBreakdowns: {
|
|
634
|
-
modelName: string & z.BRAND<"ModelName">;
|
|
635
|
-
inputTokens: number;
|
|
636
|
-
outputTokens: number;
|
|
637
|
-
cacheCreationTokens: number;
|
|
638
|
-
cacheReadTokens: number;
|
|
639
|
-
cost: number;
|
|
640
|
-
}[];
|
|
641
|
-
project?: string | undefined;
|
|
642
|
-
}, {
|
|
643
|
-
bucket: string;
|
|
644
|
-
inputTokens: number;
|
|
645
|
-
outputTokens: number;
|
|
646
|
-
cacheCreationTokens: number;
|
|
647
|
-
cacheReadTokens: number;
|
|
648
|
-
totalCost: number;
|
|
649
|
-
modelsUsed: string[];
|
|
650
|
-
modelBreakdowns: {
|
|
651
|
-
modelName: string;
|
|
652
|
-
inputTokens: number;
|
|
653
|
-
outputTokens: number;
|
|
654
|
-
cacheCreationTokens: number;
|
|
655
|
-
cacheReadTokens: number;
|
|
656
|
-
cost: number;
|
|
657
|
-
}[];
|
|
658
|
-
project?: string | undefined;
|
|
659
|
-
}>;
|
|
660
|
-
/**
|
|
661
|
-
* Type definition for bucket usage aggregation
|
|
662
|
-
*/
|
|
663
|
-
type BucketUsage = z.infer<typeof bucketUsageSchema>;
|
|
664
|
-
/**
|
|
665
|
-
* Create a unique identifier for deduplication using message ID and request ID
|
|
666
|
-
*/
|
|
667
|
-
declare function createUniqueHash(data: UsageData): string | null;
|
|
668
|
-
/**
|
|
669
|
-
* Extract the earliest timestamp from a JSONL file
|
|
670
|
-
* Scans through the file until it finds a valid timestamp
|
|
671
|
-
*/
|
|
672
|
-
declare function getEarliestTimestamp(filePath: string): Promise<Date | null>;
|
|
673
|
-
/**
|
|
674
|
-
* Sort files by their earliest timestamp
|
|
675
|
-
* Files without valid timestamps are placed at the end
|
|
676
|
-
*/
|
|
677
|
-
declare function sortFilesByTimestamp(files: string[]): Promise<string[]>;
|
|
678
|
-
/**
|
|
679
|
-
* Calculates cost for a single usage data entry based on the specified cost calculation mode
|
|
680
|
-
* @param data - Usage data entry
|
|
681
|
-
* @param mode - Cost calculation mode (auto, calculate, or display)
|
|
682
|
-
* @param fetcher - Pricing fetcher instance for calculating costs from tokens
|
|
683
|
-
* @returns Calculated cost in USD
|
|
684
|
-
*/
|
|
685
|
-
declare function calculateCostForEntry(data: UsageData, mode: CostMode, fetcher: PricingFetcher): Promise<number>;
|
|
686
|
-
/**
|
|
687
|
-
* Get Claude Code usage limit expiration date
|
|
688
|
-
* @param data - Usage data entry
|
|
689
|
-
* @returns Usage limit expiration date
|
|
690
|
-
*/
|
|
691
|
-
declare function getUsageLimitResetTime(data: UsageData): Date | null;
|
|
692
|
-
/**
|
|
693
|
-
* Result of glob operation with base directory information
|
|
694
|
-
*/
|
|
695
|
-
type GlobResult = {
|
|
696
|
-
file: string;
|
|
697
|
-
baseDir: string;
|
|
698
|
-
};
|
|
699
|
-
/**
|
|
700
|
-
* Glob files from multiple Claude paths in parallel
|
|
701
|
-
* @param claudePaths - Array of Claude base paths
|
|
702
|
-
* @returns Array of file paths with their base directories
|
|
703
|
-
*/
|
|
704
|
-
declare function globUsageFiles(claudePaths: string[]): Promise<GlobResult[]>;
|
|
705
|
-
/**
|
|
706
|
-
* Date range filter for limiting usage data by date
|
|
707
|
-
*/
|
|
708
|
-
type DateFilter = {
|
|
709
|
-
since?: string; // YYYYMMDD format
|
|
710
|
-
until?: string; // YYYYMMDD format
|
|
711
|
-
};
|
|
712
|
-
/**
|
|
713
|
-
* Configuration options for loading usage data
|
|
714
|
-
*/
|
|
715
|
-
type LoadOptions = {
|
|
716
|
-
claudePath?: string; // Custom path to Claude data directory
|
|
717
|
-
mode?: CostMode; // Cost calculation mode
|
|
718
|
-
order?: SortOrder; // Sort order for dates
|
|
719
|
-
offline?: boolean; // Use offline mode for pricing
|
|
720
|
-
sessionDurationHours?: number; // Session block duration in hours
|
|
721
|
-
groupByProject?: boolean; // Group data by project instead of aggregating
|
|
722
|
-
project?: string; // Filter to specific project name
|
|
723
|
-
startOfWeek?: WeekDay; // Start of week for weekly aggregation
|
|
724
|
-
timezone?: string; // Timezone for date grouping (e.g., 'UTC', 'America/New_York'). Defaults to system timezone
|
|
725
|
-
locale?: string; // Locale for date/time formatting (e.g., 'en-US', 'ja-JP'). Defaults to 'en-US'
|
|
726
|
-
} & DateFilter;
|
|
727
|
-
/**
|
|
728
|
-
* Loads and aggregates Claude usage data by day
|
|
729
|
-
* Processes all JSONL files in the Claude projects directory and groups usage by date
|
|
730
|
-
* @param options - Optional configuration for loading and filtering data
|
|
731
|
-
* @returns Array of daily usage summaries sorted by date
|
|
732
|
-
*/
|
|
733
|
-
declare function loadDailyUsageData(options?: LoadOptions): Promise<DailyUsage[]>;
|
|
734
|
-
/**
|
|
735
|
-
* Loads and aggregates Claude usage data by session
|
|
736
|
-
* Groups usage data by project path and session ID based on file structure
|
|
737
|
-
* @param options - Optional configuration for loading and filtering data
|
|
738
|
-
* @returns Array of session usage summaries sorted by last activity
|
|
739
|
-
*/
|
|
740
|
-
declare function loadSessionData(options?: LoadOptions): Promise<SessionUsage[]>;
|
|
741
|
-
/**
|
|
742
|
-
* Loads and aggregates Claude usage data by month
|
|
743
|
-
* Uses daily usage data as the source and groups by month
|
|
744
|
-
* @param options - Optional configuration for loading and filtering data
|
|
745
|
-
* @returns Array of monthly usage summaries sorted by month
|
|
746
|
-
*/
|
|
747
|
-
declare function loadMonthlyUsageData(options?: LoadOptions): Promise<MonthlyUsage[]>;
|
|
748
|
-
declare function loadWeeklyUsageData(options?: LoadOptions): Promise<WeeklyUsage[]>;
|
|
749
|
-
/**
|
|
750
|
-
* Load usage data for a specific session by sessionId
|
|
751
|
-
* Searches for a JSONL file named {sessionId}.jsonl in all Claude project directories
|
|
752
|
-
* @param sessionId - The session ID to load data for (matches the JSONL filename)
|
|
753
|
-
* @param options - Options for loading data
|
|
754
|
-
* @param options.mode - Cost calculation mode (auto, calculate, display)
|
|
755
|
-
* @param options.offline - Whether to use offline pricing data
|
|
756
|
-
* @returns Usage data for the specific session or null if not found
|
|
757
|
-
*/
|
|
758
|
-
declare function loadSessionUsageById(sessionId: string, options?: {
|
|
759
|
-
mode?: CostMode;
|
|
760
|
-
offline?: boolean;
|
|
761
|
-
}): Promise<{
|
|
762
|
-
totalCost: number;
|
|
763
|
-
entries: UsageData[];
|
|
764
|
-
} | null>;
|
|
765
|
-
declare function loadBucketUsageData(groupingFn: (data: DailyUsage) => Bucket, options?: LoadOptions): Promise<BucketUsage[]>;
|
|
766
|
-
/**
|
|
767
|
-
* Calculate context tokens from transcript file using improved JSONL parsing
|
|
768
|
-
* Based on the Python reference implementation for better accuracy
|
|
769
|
-
* @param transcriptPath - Path to the transcript JSONL file
|
|
770
|
-
* @returns Object with context tokens info or null if unavailable
|
|
771
|
-
*/
|
|
772
|
-
declare function calculateContextTokens(transcriptPath: string, modelId?: string, offline?: boolean): Promise<{
|
|
773
|
-
inputTokens: number;
|
|
774
|
-
percentage: number;
|
|
775
|
-
contextLimit: number;
|
|
776
|
-
} | null>;
|
|
777
|
-
/**
|
|
778
|
-
* Loads usage data and organizes it into session blocks (typically 5-hour billing periods)
|
|
779
|
-
* Processes all usage data and groups it into time-based blocks for billing analysis
|
|
780
|
-
* @param options - Optional configuration including session duration and filtering
|
|
781
|
-
* @returns Array of session blocks with usage and cost information
|
|
782
|
-
*/
|
|
783
|
-
declare function loadSessionBlockData(options?: LoadOptions): Promise<SessionBlock[]>;
|
|
784
|
-
//#endregion
|
|
785
|
-
export { BucketUsage, DailyUsage, DateFilter, GlobResult, LoadOptions, ModelBreakdown, MonthlyUsage, SessionUsage, UsageData, WeeklyUsage, bucketUsageSchema, calculateContextTokens, calculateCostForEntry, createUniqueHash, dailyUsageSchema, extractProjectFromPath, getClaudePaths, getEarliestTimestamp, getUsageLimitResetTime, globUsageFiles, loadBucketUsageData, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData, loadSessionUsageById, loadWeeklyUsageData, modelBreakdownSchema, monthlyUsageSchema, sessionUsageSchema, sortFilesByTimestamp, transcriptMessageSchema, transcriptUsageSchema, usageDataSchema, weeklyUsageSchema };
|