costhawk 1.5.11 → 1.5.13

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-parser.js","sourceRoot":"","sources":["../src/cursor-parser.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ import { homedir, hostname, platform } from "os";
10
10
  // Claude Code local transcript parsing
11
11
  import { claudeCodeDirectoryExists, discoverTranscripts, getClaudeProjectsDir, parseAllTranscriptsDetailed, } from "./transcript-parser.js";
12
12
  import { codexDirectoryExists, discoverCodexSessions, getCodexSessionsDir, parseAllCodexSessionsDetailed, } from "./codex-parser.js";
13
+ import { cursorDbExists, getCursorDbPath, getCursorMeta, isCursorParserError, parseCursorUsage, runCursorSelfTest, } from "./cursor-parser.js";
13
14
  import { calculateCost, formatCost, formatTokens, calculateSavings, CLAUDE_SUBSCRIPTIONS, getClaudeCodePricing, getLLMPricing, } from "./pricing-constants.js";
14
15
  import { BUILD_COMMIT_SHA } from "./build-info.js";
15
16
  // Constants
@@ -1360,6 +1361,35 @@ function formatUsageByTagMarkdown(data, tagKey) {
1360
1361
  }
1361
1362
  return truncateResponse(output);
1362
1363
  }
1364
+ function formatUsageBreakdownMarkdown(projectData, featureData) {
1365
+ let output = `# Cost Breakdown\n\n`;
1366
+ output += `## By Project\n\n`;
1367
+ if (projectData.length === 0) {
1368
+ output += `No project attribution data found.\n\n`;
1369
+ }
1370
+ else {
1371
+ output += `| Project | Cost | Calls | % of Total |\n`;
1372
+ output += `|---------|------|-------|------------|\n`;
1373
+ for (const item of projectData) {
1374
+ output += `| ${item.value} | ${formatCurrency(item.cost)} | ${formatNumber(item.calls)} | ${item.percentage.toFixed(1)}% |\n`;
1375
+ }
1376
+ output += `\n`;
1377
+ }
1378
+ output += `## By Feature\n\n`;
1379
+ if (featureData.length === 0) {
1380
+ output += `No feature attribution data found.\n\n`;
1381
+ }
1382
+ else {
1383
+ output += `| Feature | Cost | Calls | % of Total |\n`;
1384
+ output += `|---------|------|-------|------------|\n`;
1385
+ for (const item of featureData) {
1386
+ output += `| ${item.value} | ${formatCurrency(item.cost)} | ${formatNumber(item.calls)} | ${item.percentage.toFixed(1)}% |\n`;
1387
+ }
1388
+ output += `\n`;
1389
+ }
1390
+ output += `---\n*Use tagKey "project" or "feature" to drill into a specific dimension.*\n`;
1391
+ return truncateResponse(output);
1392
+ }
1363
1393
  function formatAnomaliesMarkdown(anomalies) {
1364
1394
  if (anomalies.length === 0) {
1365
1395
  return "# Anomaly Detection\n\nNo anomalies detected. Your usage patterns appear normal.";
@@ -2289,7 +2319,7 @@ const UsageByTagSchema = {
2289
2319
  .string()
2290
2320
  .optional()
2291
2321
  .describe("Your CostHawk API key. If not provided, uses COSTHAWK_API_KEY environment variable."),
2292
- tagKey: z.string().describe("Tag key to group by. Examples: user_id, feature, environment, team"),
2322
+ tagKey: z.string().describe('Tag key to group by. Use "breakdown" for a full project + feature cost breakdown. Other options: project, feature, user_id, environment, team, provider, model'),
2293
2323
  startDate: z.string().optional().describe("Start date (ISO 8601). Defaults to 30 days ago"),
2294
2324
  endDate: z.string().optional().describe("End date (ISO 8601). Defaults to now"),
2295
2325
  limit: z.number().min(1).max(100).optional().default(20).describe("Maximum number of results (1-100)"),
@@ -2549,6 +2579,32 @@ const GetLocalCodexUsageSchema = {
2549
2579
  .describe("Only include sessions modified within this many hours (1-720, default 24)"),
2550
2580
  format: z.enum(["markdown", "json"]).optional().default("markdown").describe("Response format"),
2551
2581
  };
2582
+ // Cursor usage schema. Three modes:
2583
+ // - "usage" (default): per-session tokens with startTime/endTime/dailyUsage
2584
+ // and timestamp provenance fields. Backward-compatible superset of the
2585
+ // PR1 response shape (dryRun wrapper and sessions array are retained).
2586
+ // - "self_test": runs the parser against the live DB and reports
2587
+ // coverage + invariant checks. Surfaces FAIL as MCP isError:true so
2588
+ // hosts can distinguish "parser broken" from "session has no data".
2589
+ // - "what_we_read": transparency mode. Returns the DB path, file size,
2590
+ // table list, key-prefix histogram, and a small sample of
2591
+ // UUID-truncated keys so users can see exactly what the parser reads.
2592
+ //
2593
+ // No apiKey or pricing — cost calculation remains deferred. Format is
2594
+ // JSON-only because the three modes have distinct shapes; markdown
2595
+ // parity can be added later if needed.
2596
+ const GetLocalCursorUsageSchema = {
2597
+ mode: z
2598
+ .enum(["usage", "self_test", "what_we_read"])
2599
+ .optional()
2600
+ .default("usage")
2601
+ .describe("Mode: 'usage' (default) returns per-session token data with timestamps; 'self_test' runs parser health checks and invariant validations; 'what_we_read' shows the exact DB path, tables, and key prefix histogram for transparency"),
2602
+ format: z
2603
+ .enum(["json"])
2604
+ .optional()
2605
+ .default("json")
2606
+ .describe("Response format. Only json is currently supported."),
2607
+ };
2552
2608
  const ListCodexSessionsSchema = {
2553
2609
  maxAgeHours: z
2554
2610
  .number()
@@ -2609,7 +2665,7 @@ server.registerTool("costhawk_get_usage_summary", {
2609
2665
  }
2610
2666
  });
2611
2667
  server.registerTool("costhawk_get_usage_by_tag", {
2612
- description: `Get usage costs grouped by a specific tag/attribute. Use this to see which features, users, or environments are driving costs.\n\nIMPORTANT: Always display the COMPLETE output in your response using markdown tables. Never summarize or truncate.`,
2668
+ description: `Get usage costs grouped by a specific tag/attribute. Use tagKey "breakdown" for a full project + feature cost breakdown. Other tagKey options: project, feature, user_id, environment, team, provider, model.\n\nIMPORTANT: Always display the COMPLETE output in your response using markdown tables. Never summarize or truncate.`,
2613
2669
  inputSchema: UsageByTagSchema,
2614
2670
  annotations: READ_ONLY_ANNOTATIONS,
2615
2671
  }, async (args, _extra) => {
@@ -2626,6 +2682,29 @@ server.registerTool("costhawk_get_usage_by_tag", {
2626
2682
  };
2627
2683
  }
2628
2684
  try {
2685
+ if (args.tagKey === "breakdown") {
2686
+ const baseParams = new URLSearchParams();
2687
+ if (args.startDate)
2688
+ baseParams.set("startDate", args.startDate);
2689
+ if (args.endDate)
2690
+ baseParams.set("endDate", args.endDate);
2691
+ if (args.limit)
2692
+ baseParams.set("limit", String(args.limit));
2693
+ const projectParams = new URLSearchParams(baseParams);
2694
+ projectParams.set("tagKey", "project");
2695
+ const featureParams = new URLSearchParams(baseParams);
2696
+ featureParams.set("tagKey", "feature");
2697
+ const [projectData, featureData] = await Promise.all([
2698
+ apiRequest(`/api/mcp/usage/by-tag?${projectParams}`, { apiKey }),
2699
+ apiRequest(`/api/mcp/usage/by-tag?${featureParams}`, { apiKey }),
2700
+ ]);
2701
+ const text = args.format === "json"
2702
+ ? JSON.stringify({ project: projectData, feature: featureData }, null, 2)
2703
+ : formatUsageBreakdownMarkdown(projectData, featureData);
2704
+ return {
2705
+ content: [{ type: "text", text }],
2706
+ };
2707
+ }
2629
2708
  const queryParams = new URLSearchParams();
2630
2709
  queryParams.set("tagKey", args.tagKey);
2631
2710
  if (args.startDate)
@@ -3832,6 +3911,127 @@ server.registerTool("costhawk_list_codex_sessions", {
3832
3911
  };
3833
3912
  }
3834
3913
  });
3914
+ // ─── Cursor Local Usage (PR1 dry-run only) ───
3915
+ //
3916
+ // Reads Cursor IDE chat history from local SQLite via shell-out to the system
3917
+ // sqlite3 binary. Read-only. Does NOT push to costcanary backend. Does NOT
3918
+ // modify any state. Returns aggregated per-conversation token counts.
3919
+ //
3920
+ // Cursor local usage tool. PR2 adds per-session timestamps (start/end,
3921
+ // dailyUsage) with provenance fields that mark the values as precise
3922
+ // (bubble-level) or approximate (composer-level fallback). Also adds two
3923
+ // operational modes — self_test and what_we_read — for diagnosing parser
3924
+ // health and surfacing exactly what data CostHawk is reading.
3925
+ //
3926
+ // The default "usage" mode retains PR1's response shape as a backward-
3927
+ // compatible superset: the `dryRun: true` wrapper is preserved, `totals`
3928
+ // is unchanged, and the `sessions` array adds new fields without removing
3929
+ // any. Consumers pinned to the PR1 shape continue to work.
3930
+ server.registerTool("costhawk_get_local_cursor_usage", {
3931
+ description: `Get Cursor IDE usage from local SQLite. Read-only — never uploads anything to CostHawk. Shows per-conversation token counts, models, time ranges, and daily breakdowns from the user's local Cursor database.
3932
+
3933
+ Modes (controlled by the \`mode\` parameter):
3934
+ - 'usage' (default): per-session token data with startTime, endTime, timestampSource/Quality, and dailyUsage.
3935
+ - 'self_test': runs the parser against the live DB and reports coverage plus invariant checks. Returns PASS / DEGRADED / FAIL.
3936
+ - 'what_we_read': transparency mode. Shows the exact DB path, file size, tables, key-prefix histogram, and a sample of keys (UUIDs truncated).
3937
+
3938
+ IMPORTANT: Always display the COMPLETE output in your response. Never summarize or truncate.`,
3939
+ inputSchema: GetLocalCursorUsageSchema,
3940
+ annotations: READ_ONLY_ANNOTATIONS,
3941
+ }, async (args, _extra) => {
3942
+ const mode = args.mode ?? "usage";
3943
+ // Precheck the SQLite file before invoking sqlite3 so the user gets a
3944
+ // helpful "install Cursor first" message instead of an opaque ENOENT.
3945
+ // self_test is the one exception — it returns a structured FAIL payload
3946
+ // instead of an error string so callers can programmatically inspect
3947
+ // why the check failed.
3948
+ if (!cursorDbExists() && mode !== "self_test") {
3949
+ return {
3950
+ content: [
3951
+ {
3952
+ type: "text",
3953
+ text: `Error: Cursor SQLite database not found at ${getCursorDbPath()}. Make sure Cursor is installed and you have used it at least once. Set COSTHAWK_CURSOR_DB_PATH to override the default path.`,
3954
+ },
3955
+ ],
3956
+ isError: true,
3957
+ };
3958
+ }
3959
+ try {
3960
+ if (mode === "self_test") {
3961
+ const testResult = runCursorSelfTest();
3962
+ const text = JSON.stringify(testResult, null, 2);
3963
+ // FAIL = parser could not run (isError so MCP hosts can react).
3964
+ // DEGRADED = parser ran with warnings; not an error, just a heads-up.
3965
+ // PASS = everything clean.
3966
+ return {
3967
+ content: [{ type: "text", text }],
3968
+ isError: testResult.overallStatus === "FAIL",
3969
+ };
3970
+ }
3971
+ if (mode === "what_we_read") {
3972
+ const meta = getCursorMeta();
3973
+ const text = JSON.stringify(meta, null, 2);
3974
+ return {
3975
+ content: [{ type: "text", text }],
3976
+ };
3977
+ }
3978
+ // mode === "usage" (default)
3979
+ const result = parseCursorUsage();
3980
+ if (result.sessions.length === 0) {
3981
+ return {
3982
+ content: [
3983
+ {
3984
+ type: "text",
3985
+ text: `No Cursor sessions with token data found at ${result.filePath}. The database exists but no token-bearing bubbles were detected. Try having a few real conversations in Cursor first.`,
3986
+ },
3987
+ ],
3988
+ };
3989
+ }
3990
+ const totalSessions = result.sessions.length;
3991
+ const totalInputTokens = result.sessions.reduce((acc, s) => acc + s.tokens.inputTokens, 0);
3992
+ const totalOutputTokens = result.sessions.reduce((acc, s) => acc + s.tokens.outputTokens, 0);
3993
+ const totalMessages = result.sessions.reduce((acc, s) => acc + s.messageCount, 0);
3994
+ // NOTE: `dryRun: true` is retained for backward compatibility with
3995
+ // the PR1 response shape. The tool is still read-only — it has never
3996
+ // pushed data to the backend and does not in PR2. The flag continues
3997
+ // to communicate that intent to PR1-era consumers who depend on it.
3998
+ const response = {
3999
+ dryRun: true,
4000
+ filePath: result.filePath,
4001
+ totals: {
4002
+ sessions: totalSessions,
4003
+ messages: totalMessages,
4004
+ inputTokens: totalInputTokens,
4005
+ outputTokens: totalOutputTokens,
4006
+ totalTokens: totalInputTokens + totalOutputTokens,
4007
+ },
4008
+ sessions: result.sessions,
4009
+ };
4010
+ const text = JSON.stringify(response, null, 2);
4011
+ return {
4012
+ content: [{ type: "text", text }],
4013
+ };
4014
+ }
4015
+ catch (err) {
4016
+ // CursorParserError carries a typed code; generic errors fall back
4017
+ // to a plain message. Both are surfaced to the MCP host with isError.
4018
+ const code = isCursorParserError(err) ? err.code : "UNKNOWN";
4019
+ const message = err instanceof Error
4020
+ ? err.message
4021
+ : typeof err === "object" && err !== null && "message" in err
4022
+ ? String(err.message)
4023
+ : "Unknown error";
4024
+ return {
4025
+ content: [
4026
+ {
4027
+ type: "text",
4028
+ text: `Error [${code}]: ${message}`,
4029
+ },
4030
+ ],
4031
+ isError: true,
4032
+ };
4033
+ }
4034
+ });
3835
4035
  // ─── Proxy Guide & Integrations Tools ───
3836
4036
  server.registerTool("costhawk_get_proxy_guide", {
3837
4037
  description: `Get the complete CostHawk API proxy setup guide. Learn how to route your OpenAI, Anthropic, or Google Gemini API calls through CostHawk for automatic cost tracking, token counting, and latency monitoring. Covers SDK configuration (Python + TypeScript), wrapped key management, response headers, error codes, and rate limits. No API key required.\n\nIMPORTANT: Always display the COMPLETE output in your response using markdown tables. Never summarize or truncate.`,