ccusage 16.2.2 → 16.2.4

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.
@@ -1,7 +1,7 @@
1
- import { CLAUDE_CONFIG_DIR_ENV, CLAUDE_PROJECTS_DIR_NAME, DEFAULT_CLAUDE_CODE_PATH, DEFAULT_CLAUDE_CONFIG_PATH, DEFAULT_LOCALE, DEFAULT_RECENT_DAYS, PricingFetcher, USAGE_DATA_GLOB_PATTERN, USER_HOME_DIR, __commonJSMin, __require, __toESM, isFailure, isPromise, isSuccess, map, pipe, require_usingCtx, try_ } from "./pricing-fetcher-DPt1jOSj.js";
1
+ import { CLAUDE_CONFIG_DIR_ENV, CLAUDE_PROJECTS_DIR_NAME, DEFAULT_CLAUDE_CODE_PATH, DEFAULT_CLAUDE_CONFIG_PATH, DEFAULT_LOCALE, DEFAULT_RECENT_DAYS, PricingFetcher, USAGE_DATA_GLOB_PATTERN, USER_HOME_DIR, __commonJSMin, __require, __toESM, isFailure, isPromise, isSuccess, map, pipe, require_usingCtx, try_ } from "./pricing-fetcher-COuXYEih.js";
2
2
  import { getTotalTokens } from "./_token-utils-WjkbrjKv.js";
3
3
  import { activityDateSchema, arrayType, booleanType, createBucket, createDailyDate, createMonthlyDate, createProjectPath, createSessionId, createWeeklyDate, dailyDateSchema, isoTimestampSchema, messageIdSchema, modelNameSchema, monthlyDateSchema, numberType, objectType, projectPathSchema, requestIdSchema, sessionIdSchema, stringType, unionType, versionSchema, weeklyDateSchema } from "./_types-DIdtMJ6V.js";
4
- import { logger } from "./logger-CCzV_6Z4.js";
4
+ import { logger } from "./logger-Df86rWXR.js";
5
5
  import a, { readFile, stat } from "node:fs/promises";
6
6
  import path, { posix } from "node:path";
7
7
  import process$1 from "node:process";
@@ -1,6 +1,6 @@
1
- import "./pricing-fetcher-DPt1jOSj.js";
1
+ import "./pricing-fetcher-COuXYEih.js";
2
2
  import "./_token-utils-WjkbrjKv.js";
3
3
  import "./_types-DIdtMJ6V.js";
4
- import { 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 } from "./data-loader-DGbft8qX.js";
5
- import "./logger-CCzV_6Z4.js";
4
+ import { 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 } from "./data-loader-DV25VhPk.js";
5
+ import "./logger-Df86rWXR.js";
6
6
  export { 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 };
@@ -1,6 +1,6 @@
1
- import { CLAUDE_PROJECTS_DIR_NAME, DEBUG_MATCH_THRESHOLD_PERCENT, PricingFetcher, USAGE_DATA_GLOB_PATTERN, __toESM, isFailure, require_usingCtx, try_ } from "./pricing-fetcher-DPt1jOSj.js";
2
- import { getClaudePaths, glob, unwrap, usageDataSchema } from "./data-loader-DGbft8qX.js";
3
- import { logger } from "./logger-CCzV_6Z4.js";
1
+ import { CLAUDE_PROJECTS_DIR_NAME, DEBUG_MATCH_THRESHOLD_PERCENT, PricingFetcher, USAGE_DATA_GLOB_PATTERN, __toESM, isFailure, require_usingCtx, try_ } from "./pricing-fetcher-COuXYEih.js";
2
+ import { getClaudePaths, glob, unwrap, usageDataSchema } from "./data-loader-DV25VhPk.js";
3
+ import { logger } from "./logger-Df86rWXR.js";
4
4
  import { readFile } from "node:fs/promises";
5
5
  import path from "node:path";
6
6
  var import_usingCtx = /* @__PURE__ */ __toESM(require_usingCtx(), 1);
package/dist/debug.js CHANGED
@@ -1,7 +1,7 @@
1
- import "./pricing-fetcher-DPt1jOSj.js";
1
+ import "./pricing-fetcher-COuXYEih.js";
2
2
  import "./_token-utils-WjkbrjKv.js";
3
3
  import "./_types-DIdtMJ6V.js";
4
- import "./data-loader-DGbft8qX.js";
5
- import "./logger-CCzV_6Z4.js";
6
- import { detectMismatches, printMismatchReport } from "./debug-CBbNSr0C.js";
4
+ import "./data-loader-DV25VhPk.js";
5
+ import "./logger-Df86rWXR.js";
6
+ import { detectMismatches, printMismatchReport } from "./debug-CWd5mOJK.js";
7
7
  export { detectMismatches, printMismatchReport };
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
- import { BLOCKS_COMPACT_WIDTH_THRESHOLD, BLOCKS_DEFAULT_TERMINAL_WIDTH, BLOCKS_WARNING_THRESHOLD, BURN_RATE_THRESHOLDS, CONFIG_FILE_NAME, DEFAULT_CONTEXT_USAGE_THRESHOLDS, DEFAULT_LOCALE, DEFAULT_RECENT_DAYS, DEFAULT_REFRESH_INTERVAL_SECONDS, MAX_REFRESH_INTERVAL_SECONDS, MCP_DEFAULT_PORT, MIN_REFRESH_INTERVAL_SECONDS, MIN_RENDER_INTERVAL_MS, PricingFetcher, WEEK_DAYS, __commonJSMin, __require, __toESM, andThen, fail, inspect, inspectError, isFailure, isSuccess, map, pipe, require_usingCtx, succeed, try_ } from "./pricing-fetcher-DPt1jOSj.js";
2
+ import { BLOCKS_COMPACT_WIDTH_THRESHOLD, BLOCKS_DEFAULT_TERMINAL_WIDTH, BLOCKS_WARNING_THRESHOLD, BURN_RATE_THRESHOLDS, CONFIG_FILE_NAME, DEFAULT_CONTEXT_USAGE_THRESHOLDS, DEFAULT_LOCALE, DEFAULT_RECENT_DAYS, DEFAULT_REFRESH_INTERVAL_SECONDS, MAX_REFRESH_INTERVAL_SECONDS, MCP_DEFAULT_PORT, MIN_REFRESH_INTERVAL_SECONDS, MIN_RENDER_INTERVAL_MS, PricingFetcher, WEEK_DAYS, __commonJSMin, __require, __toESM, andThen, fail, inspect, inspectError, isFailure, isSuccess, map, pipe, require_usingCtx, succeed, try_ } from "./pricing-fetcher-COuXYEih.js";
3
3
  import { getTotalTokens } from "./_token-utils-WjkbrjKv.js";
4
4
  import { CostModes, SortOrders, coerce, filterDateSchema, statuslineHookJsonSchema } from "./_types-DIdtMJ6V.js";
5
5
  import { calculateTotals, createTotalsObject } from "./calculate-cost-BDqO4yWA.js";
6
- import { DEFAULT_SESSION_DURATION_HOURS, calculateBurnRate, calculateContextTokens, calculateCostForEntry, createUniqueHash, filterRecentBlocks, formatDateCompact, getClaudePaths, getEarliestTimestamp, getFileModifiedTime, getUsageLimitResetTime, globUsageFiles, identifySessionBlocks, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData, loadSessionUsageById, loadWeeklyUsageData, projectBlockUsage, sortFilesByTimestamp, toArray, uniq, unreachable, unwrap, usageDataSchema } from "./data-loader-DGbft8qX.js";
7
- import { description, log, logger, name, version } from "./logger-CCzV_6Z4.js";
8
- import { detectMismatches, printMismatchReport } from "./debug-CBbNSr0C.js";
9
- import { createMcpHttpApp, createMcpServer, startMcpServerStdio } from "./mcp-CdsxcdNL.js";
6
+ import { DEFAULT_SESSION_DURATION_HOURS, calculateBurnRate, calculateContextTokens, calculateCostForEntry, createUniqueHash, filterRecentBlocks, formatDateCompact, getClaudePaths, getEarliestTimestamp, getFileModifiedTime, getUsageLimitResetTime, globUsageFiles, identifySessionBlocks, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData, loadSessionUsageById, loadWeeklyUsageData, projectBlockUsage, sortFilesByTimestamp, toArray, uniq, unreachable, unwrap, usageDataSchema } from "./data-loader-DV25VhPk.js";
7
+ import { description, log, logger, name, version } from "./logger-Df86rWXR.js";
8
+ import { detectMismatches, printMismatchReport } from "./debug-CWd5mOJK.js";
9
+ import { createMcpHttpApp, createMcpServer, startMcpServerStdio } from "./mcp-CEW0jW3t.js";
10
10
  import a, { readFile, stat } from "node:fs/promises";
11
11
  import path, { join } from "node:path";
12
12
  import process$1 from "node:process";
@@ -5272,7 +5272,7 @@ const visualBurnRateChoices = [
5272
5272
  choices: visualBurnRateChoices,
5273
5273
  description: "Controls the visualization of the burn rate status",
5274
5274
  default: "off",
5275
- short: "vb",
5275
+ short: "B",
5276
5276
  negatable: false,
5277
5277
  toKebab: true
5278
5278
  },
@@ -761,7 +761,7 @@ function _getDefaultLogLevel() {
761
761
  return g ? LogLevels.debug : R ? LogLevels.warn : LogLevels.info;
762
762
  }
763
763
  const consola = createConsola$1();
764
- var name = "ccusage", version = "16.2.2", description = "Usage analysis tool for Claude Code";
764
+ var name = "ccusage", version = "16.2.4", description = "Usage analysis tool for Claude Code";
765
765
  const logger = consola.withTag(name);
766
766
  if (process$1.env.LOG_LEVEL != null) {
767
767
  const level = Number.parseInt(process$1.env.LOG_LEVEL, 10);
package/dist/logger.js CHANGED
@@ -1,2 +1,2 @@
1
- import { log, logger } from "./logger-CCzV_6Z4.js";
1
+ import { log, logger } from "./logger-Df86rWXR.js";
2
2
  export { log, logger };
@@ -1,9 +1,9 @@
1
- import { DEFAULT_LOCALE, __commonJSMin, __toESM, require_usingCtx } from "./pricing-fetcher-DPt1jOSj.js";
1
+ import { DEFAULT_LOCALE, __commonJSMin, __toESM, require_usingCtx } from "./pricing-fetcher-COuXYEih.js";
2
2
  import { getTotalTokens } from "./_token-utils-WjkbrjKv.js";
3
3
  import { ZodFirstPartyTypeKind, ZodOptional, ZodType, arrayType, booleanType, discriminatedUnionType, enumType, filterDateSchema, literalType, numberType, objectType, optionalType, recordType, stringType, unionType, unknownType } from "./_types-DIdtMJ6V.js";
4
4
  import { calculateTotals, createTotalsObject } from "./calculate-cost-BDqO4yWA.js";
5
- import { getClaudePaths, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData } from "./data-loader-DGbft8qX.js";
6
- import { name, version } from "./logger-CCzV_6Z4.js";
5
+ import { getClaudePaths, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData } from "./data-loader-DV25VhPk.js";
6
+ import { name, version } from "./logger-Df86rWXR.js";
7
7
  import process from "node:process";
8
8
  const LATEST_PROTOCOL_VERSION = "2025-06-18", SUPPORTED_PROTOCOL_VERSIONS = [
9
9
  LATEST_PROTOCOL_VERSION,
@@ -881,21 +881,24 @@ var handleParsingAllValues = (form, key, value) => {
881
881
  id: null
882
882
  }) });
883
883
  return streamSSE(ctx, async (stream) => {
884
- const resolvedStreamId = typeof streamId === "string" ? streamId : await streamId(stream);
885
- this.#streamMapping.set(resolvedStreamId, {
886
- ctx,
887
- stream
888
- });
889
- const keepAlive = setInterval(() => {
884
+ const resolvedStreamId = typeof streamId === "string" ? streamId : await streamId(stream), keepAlive = setInterval(() => {
890
885
  if (!stream.closed) stream.writeSSE({
891
886
  data: "",
892
887
  event: "ping"
893
888
  }).catch(() => {
894
- clearInterval(keepAlive);
889
+ stream.abort();
895
890
  });
896
891
  }, 3e4);
897
- stream.onAbort(() => {
898
- this.#streamMapping.delete(resolvedStreamId), clearInterval(keepAlive);
892
+ this.#streamMapping.set(resolvedStreamId, {
893
+ ctx: { header: ctx.header },
894
+ stream,
895
+ cleanup: () => {
896
+ clearInterval(keepAlive), this.#streamMapping.delete(resolvedStreamId);
897
+ }
898
+ }), await new Promise((resolve$4) => {
899
+ stream.onAbort(() => {
900
+ this.#streamMapping.get(resolvedStreamId)?.cleanup(), resolve$4();
901
+ });
899
902
  });
900
903
  });
901
904
  } catch (error) {
@@ -967,23 +970,35 @@ var handleParsingAllValues = (form, key, value) => {
967
970
  if (!this.#enableJsonResponse && this.sessionId !== void 0) ctx.header("mcp-session-id", this.sessionId);
968
971
  if (this.#enableJsonResponse) {
969
972
  const result = await new Promise((resolve$4) => {
970
- for (const message of messages) if (isJSONRPCRequest(message)) this.#streamMapping.set(streamId, { ctx: {
971
- header: ctx.header,
972
- json: resolve$4
973
- } }), this.#requestToStreamMapping.set(message.id, streamId);
973
+ for (const message of messages) if (isJSONRPCRequest(message)) this.#streamMapping.set(streamId, {
974
+ ctx: {
975
+ header: ctx.header,
976
+ json: (data) => {
977
+ resolve$4(ctx.json(data));
978
+ }
979
+ },
980
+ cleanup: () => {
981
+ this.#streamMapping.delete(streamId);
982
+ }
983
+ }), this.#requestToStreamMapping.set(message.id, streamId);
974
984
  for (const message of messages) this.onmessage?.(message, { authInfo });
975
985
  });
976
- return ctx.json(result);
986
+ return result;
977
987
  }
978
988
  return streamSSE(ctx, async (stream) => {
979
989
  for (const message of messages) if (isJSONRPCRequest(message)) this.#streamMapping.set(streamId, {
980
- ctx,
981
- stream
990
+ ctx: { header: ctx.header },
991
+ stream,
992
+ cleanup: () => {
993
+ this.#streamMapping.delete(streamId);
994
+ }
982
995
  }), this.#requestToStreamMapping.set(message.id, streamId);
983
- stream.onAbort(() => {
984
- this.#streamMapping.delete(streamId);
985
- });
986
996
  for (const message of messages) this.onmessage?.(message, { authInfo });
997
+ await new Promise((resolve$4) => {
998
+ stream.onAbort(() => {
999
+ this.#streamMapping.get(streamId)?.cleanup(), resolve$4();
1000
+ });
1001
+ });
987
1002
  });
988
1003
  }
989
1004
  } catch (error) {
@@ -1052,7 +1067,7 @@ var handleParsingAllValues = (form, key, value) => {
1052
1067
  return true;
1053
1068
  }
1054
1069
  async close() {
1055
- for (const { stream } of this.#streamMapping.values()) stream?.close();
1070
+ for (const { stream } of this.#streamMapping.values()) stream?.abort();
1056
1071
  this.#streamMapping.clear(), this.#requestResponseMap.clear(), this.onclose?.();
1057
1072
  }
1058
1073
  async send(message, options) {
@@ -1089,9 +1104,9 @@ var handleParsingAllValues = (form, key, value) => {
1089
1104
  if (this.#enableJsonResponse) {
1090
1105
  if (this.sessionId !== void 0) response.ctx.header("mcp-session-id", this.sessionId);
1091
1106
  const responses = relatedIds.map((id) => this.#requestResponseMap.get(id));
1092
- response.ctx.json(responses.length === 1 ? responses[0] : responses);
1107
+ response.ctx.json?.(responses.length === 1 ? responses[0] : responses);
1093
1108
  return;
1094
- } else response.stream?.close();
1109
+ } else response.stream?.abort();
1095
1110
  for (const id of relatedIds) this.#requestResponseMap.delete(id), this.#requestToStreamMapping.delete(id);
1096
1111
  }
1097
1112
  }
package/dist/mcp.js CHANGED
@@ -1,8 +1,8 @@
1
- import "./pricing-fetcher-DPt1jOSj.js";
1
+ import "./pricing-fetcher-COuXYEih.js";
2
2
  import "./_token-utils-WjkbrjKv.js";
3
3
  import "./_types-DIdtMJ6V.js";
4
4
  import "./calculate-cost-BDqO4yWA.js";
5
- import "./data-loader-DGbft8qX.js";
6
- import "./logger-CCzV_6Z4.js";
7
- import { createMcpHttpApp, createMcpServer, startMcpServerStdio } from "./mcp-CdsxcdNL.js";
5
+ import "./data-loader-DV25VhPk.js";
6
+ import "./logger-Df86rWXR.js";
7
+ import { createMcpHttpApp, createMcpServer, startMcpServerStdio } from "./mcp-CEW0jW3t.js";
8
8
  export { createMcpHttpApp, createMcpServer, startMcpServerStdio };
@@ -1,5 +1,5 @@
1
1
  import { modelPricingSchema } from "./_types-DIdtMJ6V.js";
2
- import { logger } from "./logger-CCzV_6Z4.js";
2
+ import { logger } from "./logger-Df86rWXR.js";
3
3
  import { createRequire } from "node:module";
4
4
  import path from "node:path";
5
5
  import F, { homedir } from "node:os";
@@ -1,4 +1,4 @@
1
- import { PricingFetcher } from "./pricing-fetcher-DPt1jOSj.js";
1
+ import { PricingFetcher } from "./pricing-fetcher-COuXYEih.js";
2
2
  import "./_types-DIdtMJ6V.js";
3
- import "./logger-CCzV_6Z4.js";
3
+ import "./logger-Df86rWXR.js";
4
4
  export { PricingFetcher };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccusage",
3
- "version": "16.2.2",
3
+ "version": "16.2.4",
4
4
  "description": "Usage analysis tool for Claude Code",
5
5
  "homepage": "https://github.com/ryoppippi/ccusage#readme",
6
6
  "bugs": {