ccusage 12.4.0 → 13.0.1
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/LICENSE +2 -0
- package/README.md +21 -13
- package/dist/{data-loader-BL0D1ClF.js → data-loader-D0kGuKxU.js} +2 -2
- package/dist/data-loader.js +3 -3
- package/dist/{debug-DzMUvq_R.js → debug-DBezzOxe.js} +3 -3
- package/dist/debug.js +4 -4
- package/dist/index.js +5 -5
- package/dist/{logger-Cyt2-axs.js → logger-Pv_1kl_H.js} +1 -1
- package/dist/logger.js +1 -1
- package/dist/{mcp-Cx7Vxuva.js → mcp-lSzQickg.js} +3 -3
- package/dist/mcp.js +4 -4
- package/dist/{pricing-fetcher-5y05qfeL.js → pricing-fetcher-Dc_QCa7C.js} +1 -1
- package/dist/pricing-fetcher.js +2 -2
- package/package.json +1 -1
package/LICENSE
CHANGED
|
@@ -2,6 +2,8 @@ MIT License
|
|
|
2
2
|
|
|
3
3
|
Copyright (c) 2025 ryoppippi
|
|
4
4
|
|
|
5
|
+
Logo and brand assets created by nyatinte are also licensed under MIT License.
|
|
6
|
+
|
|
5
7
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
8
|
of this software and associated documentation files (the "Software"), to deal
|
|
7
9
|
in the Software without restriction, including without limitation the rights
|
package/README.md
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
>
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="https://cdn.jsdelivr.net/gh/ryoppippi/ccusage@main/docs/logo.svg" alt="ccusage logo" width="256" height="256">
|
|
3
|
+
<h1>ccusage</h1>
|
|
4
|
+
</div>
|
|
4
5
|
|
|
5
6
|
[](https://npmjs.com/package/ccusage)
|
|
6
7
|
[](https://tanstack.com/stats/npm?packageGroups=%5B%7B%22packages%22:%5B%7B%22name%22:%22ccusage%22%7D%5D%7D%5D&range=30-days&transform=none&binType=daily&showDataMode=all&height=400)
|
|
7
8
|
[](https://packagephobia.com/result?p=ccusage)
|
|
8
|
-
[](https://deepwiki.com/ryoppippi/ccusage)<!-- DeepWiki badge generated by https://deepwiki.ryoppippi.com/ -->
|
|
9
|
+
[](https://deepwiki.com/ryoppippi/ccusage) <!-- DeepWiki badge generated by https://deepwiki.ryoppippi.com/ -->
|
|
9
10
|
[](https://github.com/hesreallyhim/awesome-claude-code)
|
|
10
11
|
|
|
11
12
|
<div align="center">
|
|
12
|
-
<img src="https://
|
|
13
|
+
<img src="https://cdn.jsdelivr.net/gh/ryoppippi/ccusage@main/docs/screenshot.png">
|
|
13
14
|
</div>
|
|
14
15
|
|
|
16
|
+
> **ccusage(claude-code-usage)**
|
|
17
|
+
|
|
15
18
|
A CLI tool for analyzing Claude Code usage from local JSONL files.
|
|
16
19
|
|
|
17
20
|
Inspired by [this article](https://note.com/milliondev/n/n1d018da2d769) about tracking Claude Code usage costs.
|
|
@@ -19,15 +22,15 @@ Inspired by [this article](https://note.com/milliondev/n/n1d018da2d769) about tr
|
|
|
19
22
|
## What is `ccusage` (by NotebookLM)
|
|
20
23
|
|
|
21
24
|
<details>
|
|
22
|
-
<summary>
|
|
25
|
+
<summary>Podcast</summary>
|
|
23
26
|
|
|
24
27
|
# English
|
|
25
28
|
|
|
26
|
-
https://github.com/user-attachments/assets/7a00f2f3-82a7-41b6-a8da-e04b76b5e35a
|
|
29
|
+
<https://github.com/user-attachments/assets/7a00f2f3-82a7-41b6-a8da-e04b76b5e35a>
|
|
27
30
|
|
|
28
31
|
# 日本語
|
|
29
32
|
|
|
30
|
-
https://github.com/user-attachments/assets/db09fc06-bf57-4d37-9b06-514851bcc1d0
|
|
33
|
+
<https://github.com/user-attachments/assets/db09fc06-bf57-4d37-9b06-514851bcc1d0>
|
|
31
34
|
|
|
32
35
|
</details>
|
|
33
36
|
|
|
@@ -276,7 +279,7 @@ The blocks report helps you understand Claude Code's 5-hour rolling session wind
|
|
|
276
279
|
- Helps track if you're approaching token limits within a session
|
|
277
280
|
- The `-t max` option automatically uses your highest previous block as the limit
|
|
278
281
|
|
|
279
|
-
#### Blocks-specific options
|
|
282
|
+
#### Blocks-specific options
|
|
280
283
|
|
|
281
284
|
- `-t, --token-limit <number|max>`: Set token limit for quota warnings (use "max" for highest previous block)
|
|
282
285
|
- `-a, --active`: Show only active block with detailed projections
|
|
@@ -349,7 +352,7 @@ Available MCP tools:
|
|
|
349
352
|
#### Claude Desktop Configuration Example
|
|
350
353
|
|
|
351
354
|
<div align="center">
|
|
352
|
-
<img src="https://
|
|
355
|
+
<img src="https://cdn.jsdelivr.net/gh/ryoppippi/ccusage@main/docs/mcp-claude-desktop.avif">
|
|
353
356
|
</div>
|
|
354
357
|
|
|
355
358
|
To use ccusage MCP with Claude Desktop, add this to your Claude Desktop configuration file:
|
|
@@ -477,6 +480,10 @@ With `--breakdown` flag:
|
|
|
477
480
|
|
|
478
481
|
MIT
|
|
479
482
|
|
|
483
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
484
|
+
|
|
485
|
+
The logo and brand assets are also licensed under the MIT License. Created by [@nyatinte](https://github.com/nyatinte).
|
|
486
|
+
|
|
480
487
|
## Author
|
|
481
488
|
|
|
482
489
|
[@ryoppippi](https://github.com/ryoppippi)
|
|
@@ -492,6 +499,7 @@ While the original approach uses DuckDB for analysis, this tool provides a more
|
|
|
492
499
|
some projects use `ccusage` internally and provide additional features:
|
|
493
500
|
|
|
494
501
|
- [claude-usage-tracker-for-mac](https://github.com/penicillin0/claude-usage-tracker-for-mac) – macOS menu bar app to visualize Claude Code usage costs by [@penicillin0](https://github.com/penicillin0).
|
|
502
|
+
- [ccusage Raycast Extension](https://www.raycast.com/nyatinte/ccusage) – Raycast extension to view Claude Code usage reports in Raycast by [@nyatinte](https://github.com/nyatinte).
|
|
495
503
|
|
|
496
504
|
## Acknowledgments
|
|
497
505
|
|
|
@@ -500,9 +508,9 @@ Thanks to [@milliondev](https://note.com/milliondev) for the original concept an
|
|
|
500
508
|
## Sponsors
|
|
501
509
|
|
|
502
510
|
<p align="center">
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
511
|
+
<a href="https://github.com/sponsors/ryoppippi">
|
|
512
|
+
<img src="https://cdn.jsdelivr.net/gh/ryoppippi/sponsors/sponsors.svg">
|
|
513
|
+
</a>
|
|
506
514
|
</p>
|
|
507
515
|
|
|
508
516
|
## Star History
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CLAUDE_PROJECTS_DIR_NAME, DEFAULT_CLAUDE_CODE_PATH, DEFAULT_RECENT_DAYS, PricingFetcher, USAGE_DATA_GLOB_PATTERN, USER_HOME_DIR, __commonJSMin, __require, __toESM, require_usingCtx } from "./pricing-fetcher-
|
|
1
|
+
import { CLAUDE_PROJECTS_DIR_NAME, DEFAULT_CLAUDE_CODE_PATH, DEFAULT_RECENT_DAYS, PricingFetcher, USAGE_DATA_GLOB_PATTERN, USER_HOME_DIR, __commonJSMin, __require, __toESM, require_usingCtx } from "./pricing-fetcher-Dc_QCa7C.js";
|
|
2
2
|
import { activityDateSchema, arrayType, createDailyDate, createMonthlyDate, createProjectPath, createSessionId, dailyDateSchema, isoTimestampSchema, messageIdSchema, modelNameSchema, monthlyDateSchema, numberType, objectType, projectPathSchema, requestIdSchema, sessionIdSchema, versionSchema } from "./types.internal-CX7kpidj.js";
|
|
3
|
-
import { logger } from "./logger-
|
|
3
|
+
import { logger } from "./logger-Pv_1kl_H.js";
|
|
4
4
|
import a, { readFile } from "node:fs/promises";
|
|
5
5
|
import F, { homedir } from "node:os";
|
|
6
6
|
import path, { posix } from "node:path";
|
package/dist/data-loader.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "./pricing-fetcher-
|
|
1
|
+
import "./pricing-fetcher-Dc_QCa7C.js";
|
|
2
2
|
import "./types.internal-CX7kpidj.js";
|
|
3
|
-
import { calculateCostForEntry, createUniqueHash, dailyUsageSchema, formatDate, formatDateCompact, getDefaultClaudePath, getEarliestTimestamp, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData, modelBreakdownSchema, monthlyUsageSchema, sessionUsageSchema, sortFilesByTimestamp, usageDataSchema } from "./data-loader-
|
|
4
|
-
import "./logger-
|
|
3
|
+
import { calculateCostForEntry, createUniqueHash, dailyUsageSchema, formatDate, formatDateCompact, getDefaultClaudePath, getEarliestTimestamp, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData, modelBreakdownSchema, monthlyUsageSchema, sessionUsageSchema, sortFilesByTimestamp, usageDataSchema } from "./data-loader-D0kGuKxU.js";
|
|
4
|
+
import "./logger-Pv_1kl_H.js";
|
|
5
5
|
export { calculateCostForEntry, createUniqueHash, dailyUsageSchema, formatDate, formatDateCompact, getDefaultClaudePath, getEarliestTimestamp, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData, modelBreakdownSchema, monthlyUsageSchema, sessionUsageSchema, sortFilesByTimestamp, usageDataSchema };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CLAUDE_PROJECTS_DIR_NAME, DEBUG_MATCH_THRESHOLD_PERCENT, DEFAULT_CLAUDE_CODE_PATH, PricingFetcher, USAGE_DATA_GLOB_PATTERN, USER_HOME_DIR, __toESM, require_usingCtx } from "./pricing-fetcher-
|
|
2
|
-
import { glob, usageDataSchema } from "./data-loader-
|
|
3
|
-
import { logger } from "./logger-
|
|
1
|
+
import { CLAUDE_PROJECTS_DIR_NAME, DEBUG_MATCH_THRESHOLD_PERCENT, DEFAULT_CLAUDE_CODE_PATH, PricingFetcher, USAGE_DATA_GLOB_PATTERN, USER_HOME_DIR, __toESM, require_usingCtx } from "./pricing-fetcher-Dc_QCa7C.js";
|
|
2
|
+
import { glob, usageDataSchema } from "./data-loader-D0kGuKxU.js";
|
|
3
|
+
import { logger } from "./logger-Pv_1kl_H.js";
|
|
4
4
|
import { readFile } from "node:fs/promises";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
var import_usingCtx = __toESM(require_usingCtx(), 1);
|
package/dist/debug.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "./pricing-fetcher-
|
|
1
|
+
import "./pricing-fetcher-Dc_QCa7C.js";
|
|
2
2
|
import "./types.internal-CX7kpidj.js";
|
|
3
|
-
import "./data-loader-
|
|
4
|
-
import "./logger-
|
|
5
|
-
import { detectMismatches, printMismatchReport } from "./debug-
|
|
3
|
+
import "./data-loader-D0kGuKxU.js";
|
|
4
|
+
import "./logger-Pv_1kl_H.js";
|
|
5
|
+
import { detectMismatches, printMismatchReport } from "./debug-DBezzOxe.js";
|
|
6
6
|
export { detectMismatches, printMismatchReport };
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { BLOCKS_COMPACT_WIDTH_THRESHOLD, BLOCKS_DEFAULT_TERMINAL_WIDTH, BLOCKS_WARNING_THRESHOLD, DEFAULT_RECENT_DAYS, MCP_DEFAULT_PORT, __commonJSMin, __require, __toESM } from "./pricing-fetcher-
|
|
2
|
+
import { BLOCKS_COMPACT_WIDTH_THRESHOLD, BLOCKS_DEFAULT_TERMINAL_WIDTH, BLOCKS_WARNING_THRESHOLD, DEFAULT_RECENT_DAYS, MCP_DEFAULT_PORT, __commonJSMin, __require, __toESM } from "./pricing-fetcher-Dc_QCa7C.js";
|
|
3
3
|
import { CostModes, SortOrders, dateSchema } from "./types.internal-CX7kpidj.js";
|
|
4
4
|
import { calculateTotals, createTotalsObject, getTotalTokens } from "./calculate-cost-CoS7we68.js";
|
|
5
|
-
import { DEFAULT_SESSION_DURATION_HOURS, calculateBurnRate, filterRecentBlocks, formatDateCompact, getDefaultClaudePath, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData, projectBlockUsage, uniq } from "./data-loader-
|
|
6
|
-
import { description, log, logger, name, version } from "./logger-
|
|
7
|
-
import { detectMismatches, printMismatchReport } from "./debug-
|
|
8
|
-
import { createMcpHttpApp, createMcpServer, startMcpServerStdio } from "./mcp-
|
|
5
|
+
import { DEFAULT_SESSION_DURATION_HOURS, calculateBurnRate, filterRecentBlocks, formatDateCompact, getDefaultClaudePath, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData, projectBlockUsage, uniq } from "./data-loader-D0kGuKxU.js";
|
|
6
|
+
import { description, log, logger, name, version } from "./logger-Pv_1kl_H.js";
|
|
7
|
+
import { detectMismatches, printMismatchReport } from "./debug-DBezzOxe.js";
|
|
8
|
+
import { createMcpHttpApp, createMcpServer, startMcpServerStdio } from "./mcp-lSzQickg.js";
|
|
9
9
|
import process$1 from "node:process";
|
|
10
10
|
import { createServer } from "node:http";
|
|
11
11
|
import { Http2ServerRequest } from "node:http2";
|
|
@@ -951,7 +951,7 @@ function _getDefaultLogLevel() {
|
|
|
951
951
|
}
|
|
952
952
|
const consola = createConsola$1();
|
|
953
953
|
var name = "ccusage";
|
|
954
|
-
var version = "
|
|
954
|
+
var version = "13.0.1";
|
|
955
955
|
var description = "Usage analysis tool for Claude Code";
|
|
956
956
|
/**
|
|
957
957
|
* Application logger instance with package name tag
|
package/dist/logger.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { log, logger } from "./logger-
|
|
1
|
+
import { log, logger } from "./logger-Pv_1kl_H.js";
|
|
2
2
|
export { log, logger };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { __commonJSMin, __toESM, require_usingCtx } from "./pricing-fetcher-
|
|
1
|
+
import { __commonJSMin, __toESM, require_usingCtx } from "./pricing-fetcher-Dc_QCa7C.js";
|
|
2
2
|
import { ZodFirstPartyTypeKind, ZodOptional, ZodType, arrayType, booleanType, dateSchema, discriminatedUnionType, enumType, literalType, numberType, objectType, optionalType, recordType, stringType, unionType, unknownType } from "./types.internal-CX7kpidj.js";
|
|
3
|
-
import { getDefaultClaudePath, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData } from "./data-loader-
|
|
4
|
-
import { name, version } from "./logger-
|
|
3
|
+
import { getDefaultClaudePath, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData } from "./data-loader-D0kGuKxU.js";
|
|
4
|
+
import { name, version } from "./logger-Pv_1kl_H.js";
|
|
5
5
|
import process from "node:process";
|
|
6
6
|
const LATEST_PROTOCOL_VERSION = "2025-03-26";
|
|
7
7
|
const SUPPORTED_PROTOCOL_VERSIONS = [
|
package/dist/mcp.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "./pricing-fetcher-
|
|
1
|
+
import "./pricing-fetcher-Dc_QCa7C.js";
|
|
2
2
|
import "./types.internal-CX7kpidj.js";
|
|
3
|
-
import "./data-loader-
|
|
4
|
-
import "./logger-
|
|
5
|
-
import { createMcpHttpApp, createMcpServer, startMcpServerStdio } from "./mcp-
|
|
3
|
+
import "./data-loader-D0kGuKxU.js";
|
|
4
|
+
import "./logger-Pv_1kl_H.js";
|
|
5
|
+
import { createMcpHttpApp, createMcpServer, startMcpServerStdio } from "./mcp-lSzQickg.js";
|
|
6
6
|
export { createMcpHttpApp, createMcpServer, startMcpServerStdio };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { modelPricingSchema } from "./types.internal-CX7kpidj.js";
|
|
2
|
-
import { logger } from "./logger-
|
|
2
|
+
import { logger } from "./logger-Pv_1kl_H.js";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
var __create = Object.create;
|
package/dist/pricing-fetcher.js
CHANGED