@costwise/sdk 0.0.2 → 0.0.3

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 CHANGED
@@ -50,6 +50,7 @@ Tracking is fire-and-forget and never awaited, so request latency is not impacte
50
50
 
51
51
  - `COSTWISE_API_KEY` (optional if `costwiseKey` is provided in constructor)
52
52
  - Constructor key aliases supported: `costwiseKey` (canonical) and `costswiseKey` (compatibility alias)
53
+ - `COSTWISE_LOCAL_USAGE_PATH` (optional JSONL file path for local usage history used by CLI)
53
54
 
54
55
  ## Ingest payload
55
56
 
@@ -123,6 +124,32 @@ Run a local end-to-end smoke test (build + mocked ingest + comparison output):
123
124
  npm run smoke
124
125
  ```
125
126
 
127
+ ## CLI for actual usage
128
+
129
+ The CLI reads **real usage events** from a local JSONL file written by the SDK at runtime.
130
+
131
+ 1) Set a usage file path in your app environment:
132
+
133
+ ```bash
134
+ export COSTWISE_LOCAL_USAGE_PATH=.costwise-usage.jsonl
135
+ ```
136
+
137
+ 2) Run your app so events are recorded.
138
+
139
+ 3) Query usage and compare alternatives:
140
+
141
+ ```bash
142
+ costwise usage
143
+ costwise compare-actual
144
+ ```
145
+
146
+ Optional:
147
+
148
+ ```bash
149
+ costwise usage --file .costwise-usage.jsonl --json
150
+ costwise compare-actual --file .costwise-usage.jsonl --json
151
+ ```
152
+
126
153
  ## Automated tests
127
154
 
128
155
  Run the Node test suite (build + unit tests):
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,156 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const promises_1 = require("node:fs/promises");
5
+ const tracker_js_1 = require("./src/tracker.js");
6
+ function help(exitCode) {
7
+ process.stdout.write([
8
+ "Costwise CLI (actual usage only)",
9
+ "",
10
+ "Usage:",
11
+ " costwise usage [--file <path>] [--json]",
12
+ " costwise compare-actual [--file <path>] [--json]",
13
+ "",
14
+ "Notes:",
15
+ " - Reads usage events from JSONL recorded by SDK (`COSTWISE_LOCAL_USAGE_PATH`).",
16
+ " - No manual token input flags are supported."
17
+ ].join("\n") + "\n");
18
+ process.exit(exitCode);
19
+ }
20
+ function parse(argv) {
21
+ if (argv.length === 0 || argv.includes("--help") || argv.includes("-h")) {
22
+ help(0);
23
+ }
24
+ const options = { json: false };
25
+ const first = argv[0];
26
+ if (first === "usage" || first === "compare-actual") {
27
+ options.command = first;
28
+ }
29
+ else {
30
+ help(1);
31
+ }
32
+ for (let i = 1; i < argv.length; i += 1) {
33
+ const arg = argv[i];
34
+ const next = argv[i + 1];
35
+ if (arg === "--file" && next) {
36
+ options.filePath = next;
37
+ i += 1;
38
+ continue;
39
+ }
40
+ if (arg === "--json") {
41
+ options.json = true;
42
+ continue;
43
+ }
44
+ help(1);
45
+ }
46
+ return options;
47
+ }
48
+ async function loadEvents(path) {
49
+ const content = await (0, promises_1.readFile)(path, "utf8");
50
+ const lines = content.split("\n").map((line) => line.trim()).filter(Boolean);
51
+ return lines.map((line) => JSON.parse(line));
52
+ }
53
+ function runUsage(events, asJson) {
54
+ const totals = events.reduce((acc, event) => {
55
+ acc.input += event.input_tokens;
56
+ acc.output += event.output_tokens;
57
+ acc.cost += event.estimated_cost;
58
+ acc.byModel[event.model] = (acc.byModel[event.model] ?? 0) + event.estimated_cost;
59
+ return acc;
60
+ }, { input: 0, output: 0, cost: 0, byModel: {} });
61
+ const topModels = Object.entries(totals.byModel)
62
+ .map(([model, cost]) => ({ model, cost }))
63
+ .sort((a, b) => b.cost - a.cost)
64
+ .slice(0, 5);
65
+ if (asJson) {
66
+ process.stdout.write(`${JSON.stringify({
67
+ events: events.length,
68
+ input_tokens: totals.input,
69
+ output_tokens: totals.output,
70
+ estimated_cost: totals.cost,
71
+ top_models: topModels
72
+ }, null, 2)}\n`);
73
+ return;
74
+ }
75
+ const lines = [
76
+ `Events: ${events.length}`,
77
+ `Input tokens: ${totals.input}`,
78
+ `Output tokens: ${totals.output}`,
79
+ `Estimated cost: $${totals.cost.toFixed(6)}`,
80
+ "Top models by spend:"
81
+ ];
82
+ for (const model of topModels) {
83
+ lines.push(` - ${model.model}: $${model.cost.toFixed(6)}`);
84
+ }
85
+ process.stdout.write(`${lines.join("\n")}\n`);
86
+ }
87
+ function runCompareActual(events, asJson) {
88
+ const totalInput = events.reduce((sum, event) => sum + event.input_tokens, 0);
89
+ const totalOutput = events.reduce((sum, event) => sum + event.output_tokens, 0);
90
+ const actualCost = events.reduce((sum, event) => sum + event.estimated_cost, 0);
91
+ const alternatives = Object.entries(tracker_js_1.PRICING)
92
+ .map(([model, rates]) => {
93
+ const estimated_cost = (totalInput / 1_000_000) * rates.input + (totalOutput / 1_000_000) * rates.output;
94
+ return {
95
+ model,
96
+ estimated_cost,
97
+ delta_vs_actual: estimated_cost - actualCost
98
+ };
99
+ })
100
+ .sort((a, b) => a.estimated_cost - b.estimated_cost);
101
+ const tracker = new tracker_js_1.CostwiseTracker();
102
+ const formatted = tracker.formatComparisonForCli({
103
+ model: alternatives[0]?.model ?? "unknown",
104
+ inputTokens: totalInput,
105
+ outputTokens: totalOutput
106
+ });
107
+ if (asJson) {
108
+ process.stdout.write(`${JSON.stringify({
109
+ actual: {
110
+ events: events.length,
111
+ input_tokens: totalInput,
112
+ output_tokens: totalOutput,
113
+ estimated_cost: actualCost
114
+ },
115
+ alternatives: alternatives.slice(0, 10)
116
+ }, null, 2)}\n`);
117
+ return;
118
+ }
119
+ const lines = [
120
+ `Actual usage events: ${events.length}`,
121
+ `Actual estimated cost: $${actualCost.toFixed(6)}`,
122
+ "Top alternative models (same total tokens):",
123
+ ...alternatives.slice(0, 5).map((alt) => ` - ${alt.model}: $${alt.estimated_cost.toFixed(6)} (delta ${alt.delta_vs_actual >= 0 ? "+" : ""}${alt.delta_vs_actual.toFixed(6)})`),
124
+ "",
125
+ "Cheapest-model summary:",
126
+ formatted.text
127
+ ];
128
+ process.stdout.write(`${lines.join("\n")}\n`);
129
+ }
130
+ async function main() {
131
+ const options = parse(process.argv.slice(2));
132
+ const usagePath = options.filePath ?? process.env.COSTWISE_LOCAL_USAGE_PATH;
133
+ if (!usagePath) {
134
+ process.stderr.write("Missing usage file. Set COSTWISE_LOCAL_USAGE_PATH or pass --file.\n");
135
+ process.exit(1);
136
+ }
137
+ let events = [];
138
+ try {
139
+ events = await loadEvents(usagePath);
140
+ }
141
+ catch {
142
+ process.stderr.write(`Unable to read usage file: ${usagePath}\n`);
143
+ process.exit(1);
144
+ }
145
+ if (events.length === 0) {
146
+ process.stdout.write("No usage events found.\n");
147
+ return;
148
+ }
149
+ if (options.command === "usage") {
150
+ runUsage(events, options.json);
151
+ return;
152
+ }
153
+ runCompareActual(events, options.json);
154
+ }
155
+ void main();
156
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../cli.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { CostwiseAnthropic } from "./src/anthropic.js";
2
2
  export { CostwiseOpenAI } from "./src/openai.js";
3
3
  export { CostwiseTracker, MODEL_CAPACITIES, PRICING } from "./src/tracker.js";
4
- export type { CostwiseOptions, IngestPayload, CliComparisonFormat, ModelCapacity, ModelCapacityClass, ModelComparison, ModelComparisonByCapacity } from "./src/types.js";
4
+ export type { CostwiseOptions, IngestPayload, CliComparisonFormat, LocalUsageEvent, ModelCapacity, ModelCapacityClass, ModelComparison, ModelComparisonByCapacity } from "./src/types.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC"}
@@ -8,6 +8,7 @@ declare const MODEL_CAPACITIES: Record<string, ModelCapacity>;
8
8
  export declare class CostwiseTracker {
9
9
  private readonly apiKey?;
10
10
  private readonly tag?;
11
+ private readonly localUsagePath?;
11
12
  constructor(options?: CostwiseOptions);
12
13
  trackUsage(snapshot: UsageSnapshot): void;
13
14
  compareCosts(snapshot: UsageSnapshot): ModelComparison[];
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,aAAa,EAEb,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA6BF,QAAA,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAGvC,CAAC;AAEF,QAAA,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAsBnD,CAAC;AAIF,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAS;gBAElB,OAAO,GAAE,eAAoB;IAKzC,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAgBzC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,eAAe,EAAE;IAqBxD,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,yBAAyB;IAgC1E,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM;IAWpD,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,mBAAmB;IA+BpE,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;CAKtB;AAED,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAGf,aAAa,EAEb,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA6BF,QAAA,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAGvC,CAAC;AAEF,QAAA,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAsBnD,CAAC;AAIF,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAS;gBAE7B,OAAO,GAAE,eAAoB;IAMzC,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IA8BzC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,eAAe,EAAE;IAqBxD,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,yBAAyB;IAgC1E,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM;IAWpD,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,mBAAmB;IA+BpE,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;CAKtB;AAED,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PRICING = exports.MODEL_CAPACITIES = exports.CostwiseTracker = void 0;
4
+ const promises_1 = require("node:fs/promises");
4
5
  const OPENAI_PRICING = {
5
6
  "gpt-5.4": { input: 2.5, output: 15 },
6
7
  "gpt-5.4-mini": { input: 0.75, output: 4.5 },
@@ -59,23 +60,38 @@ const INGEST_URL = "https://api.costwise.dev/ingest";
59
60
  class CostwiseTracker {
60
61
  apiKey;
61
62
  tag;
63
+ localUsagePath;
62
64
  constructor(options = {}) {
63
65
  this.apiKey = options.costwiseKey ?? options.costswiseKey ?? options.apiKey ?? process.env.COSTWISE_API_KEY;
64
66
  this.tag = options.tag;
67
+ this.localUsagePath = options.localUsagePath ?? process.env.COSTWISE_LOCAL_USAGE_PATH;
65
68
  }
66
69
  trackUsage(snapshot) {
67
70
  const payload = this.createPayload(snapshot);
68
- if (!payload || !this.apiKey) {
71
+ if (!payload) {
69
72
  return;
70
73
  }
71
- void fetch(INGEST_URL, {
72
- method: "POST",
73
- headers: {
74
- "content-type": "application/json",
75
- authorization: `Bearer ${this.apiKey}`
76
- },
77
- body: JSON.stringify(payload)
78
- }).catch(() => { });
74
+ if (this.apiKey) {
75
+ void fetch(INGEST_URL, {
76
+ method: "POST",
77
+ headers: {
78
+ "content-type": "application/json",
79
+ authorization: `Bearer ${this.apiKey}`
80
+ },
81
+ body: JSON.stringify(payload)
82
+ }).catch(() => { });
83
+ }
84
+ if (this.localUsagePath) {
85
+ const localEvent = {
86
+ model: payload.model,
87
+ input_tokens: payload.input_tokens,
88
+ output_tokens: payload.output_tokens,
89
+ estimated_cost: payload.estimated_cost,
90
+ tag: payload.tag,
91
+ timestamp: payload.timestamp
92
+ };
93
+ void (0, promises_1.appendFile)(this.localUsagePath, `${JSON.stringify(localEvent)}\n`, "utf8").catch(() => { });
94
+ }
79
95
  }
80
96
  compareCosts(snapshot) {
81
97
  const currentCost = this.estimateCost(snapshot.model, snapshot.inputTokens, snapshot.outputTokens);
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/tracker.ts"],"names":[],"mappings":";;;AAWA,+CAA8C;AAO9C,MAAM,cAAc,GAA+B;IACjD,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;IACrC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5C,cAAc,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAC5C,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;IACzC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;IACtC,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;IACzC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC/B,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IACrC,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IACtC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;IACpC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;CAC5C,CAAC;AAEF,MAAM,iBAAiB,GAA+B;IACpD,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAC3C,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAC3C,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC5C,eAAe,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC1C,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7C,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7C,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IAC3C,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC3C,kBAAkB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE;IAC7C,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;CAChD,CAAC;AAEF,MAAM,OAAO,GAA+B;IAC1C,GAAG,cAAc;IACjB,GAAG,iBAAiB;CACrB,CAAC;AA4MyB,0BAAO;AA1MlC,MAAM,gBAAgB,GAAkC;IACtD,SAAS,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE;IACtE,cAAc,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE;IACvE,cAAc,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE;IACvE,aAAa,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE;IAC1E,SAAS,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE;IAClE,aAAa,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE;IAC1E,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE;IACjC,QAAQ,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE;IACvC,SAAS,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IACpC,QAAQ,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IACnC,aAAa,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;IACxC,iBAAiB,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE;IAChF,iBAAiB,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE;IAC9E,iBAAiB,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE;IAC9E,eAAe,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE;IAC5E,mBAAmB,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE;IAC9E,mBAAmB,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE;IAC9E,iBAAiB,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE;IAC5E,kBAAkB,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE;IAC3E,kBAAkB,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE;IAC3E,gBAAgB,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE;CAC1E,CAAC;AAoLO,4CAAgB;AAlLzB,MAAM,UAAU,GAAG,iCAAiC,CAAC;AAErD,MAAa,eAAe;IACT,MAAM,CAAU;IAChB,GAAG,CAAU;IACb,cAAc,CAAU;IAEzC,YAAY,UAA2B,EAAE;QACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC5G,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IACxF,CAAC;IAED,UAAU,CAAC,QAAuB;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,KAAK,CAAC,UAAU,EAAE;gBACrB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;iBACvC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC9B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,UAAU,GAAoB;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC;YACF,KAAK,IAAA,qBAAU,EAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;IAED,YAAY,CAAC,QAAuB;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;QACnG,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;YACtB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAC7F,OAAO;gBACL,KAAK;gBACL,gBAAgB,EAAE,KAAK,CAAC,KAAK;gBAC7B,iBAAiB,EAAE,KAAK,CAAC,MAAM;gBAC/B,aAAa;gBACb,oBAAoB,EAAE,aAAa,GAAG,WAAW;gBACjD,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE;aACnE,CAAC;QACJ,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;IACvD,CAAC;IAED,sBAAsB,CAAC,QAAuB;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;QAC/C,CAAC;QAED,MAAM,OAAO,GAA2D,EAAE,CAAC;QAC3E,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;YACrC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAyB,EAAE,CAAC;YAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAAyD,EAAE,CAAC;QAClF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAyB,EAAE,CAAC;YAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACd,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IACvC,CAAC;IAED,mBAAmB,CAAC,QAAuB;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,oCAAoC,QAAQ,CAAC,KAAK,GAAG,CAAC;QAC/D,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrD,OAAO,OAAO,QAAQ,CAAC,WAAW,YAAY,QAAQ,CAAC,YAAY,+BAA+B,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACrO,CAAC;IAED,sBAAsB,CAAC,QAAuB;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,8CAA8C,QAAQ,CAAC,KAAK,GAAG,CAAC;YAC7E,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;QAC5E,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3E,MAAM,KAAK,GAAa;YACtB,2BAA2B,QAAQ,CAAC,KAAK,EAAE;YAC3C,UAAU,QAAQ,CAAC,WAAW,YAAY,QAAQ,CAAC,YAAY,gBAAgB;YAC/E,wBAAwB,CAAC,OAAO,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClE,qBAAqB,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YAC7E,uBAAuB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;SACvD,CAAC;QAEF,MAAM,OAAO,GAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACvF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;IAEO,aAAa,CAAC,QAAuB;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC5F,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QAE9D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3C,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,YAAY;YACZ,aAAa;YACb,IAAI;YACJ,cAAc,EAAE,IAAI;YACpB,GAAG;YACH,YAAY,EAAE,GAAG;YACjB,EAAE,EAAE,SAAS;YACb,SAAS;SACV,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,KAAa,EAAE,WAAmB,EAAE,YAAoB;QAC3E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAEO,aAAa,CAAC,WAAmB,EAAE,YAAoB,EAAE,KAAiB;QAChF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACjF,CAAC;CACF;AA9KD,0CA8KC"}
@@ -3,6 +3,7 @@ export type CostwiseOptions = {
3
3
  costwiseKey?: string;
4
4
  costswiseKey?: string;
5
5
  tag?: string;
6
+ localUsagePath?: string;
6
7
  };
7
8
  export type IngestPayload = {
8
9
  model: string;
@@ -44,4 +45,12 @@ export type CliComparisonFormat = {
44
45
  text: string;
45
46
  lines: string[];
46
47
  };
48
+ export type LocalUsageEvent = {
49
+ model: string;
50
+ input_tokens: number;
51
+ output_tokens: number;
52
+ estimated_cost: number;
53
+ tag?: string;
54
+ timestamp: string;
55
+ };
47
56
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAEhE,+GAA+G;AAC/G,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IAChE,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAEhE,+GAA+G;AAC/G,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IAChE,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,154 @@
1
+ #!/usr/bin/env node
2
+ import { readFile } from "node:fs/promises";
3
+ import { CostwiseTracker, PRICING } from "./src/tracker.js";
4
+ function help(exitCode) {
5
+ process.stdout.write([
6
+ "Costwise CLI (actual usage only)",
7
+ "",
8
+ "Usage:",
9
+ " costwise usage [--file <path>] [--json]",
10
+ " costwise compare-actual [--file <path>] [--json]",
11
+ "",
12
+ "Notes:",
13
+ " - Reads usage events from JSONL recorded by SDK (`COSTWISE_LOCAL_USAGE_PATH`).",
14
+ " - No manual token input flags are supported."
15
+ ].join("\n") + "\n");
16
+ process.exit(exitCode);
17
+ }
18
+ function parse(argv) {
19
+ if (argv.length === 0 || argv.includes("--help") || argv.includes("-h")) {
20
+ help(0);
21
+ }
22
+ const options = { json: false };
23
+ const first = argv[0];
24
+ if (first === "usage" || first === "compare-actual") {
25
+ options.command = first;
26
+ }
27
+ else {
28
+ help(1);
29
+ }
30
+ for (let i = 1; i < argv.length; i += 1) {
31
+ const arg = argv[i];
32
+ const next = argv[i + 1];
33
+ if (arg === "--file" && next) {
34
+ options.filePath = next;
35
+ i += 1;
36
+ continue;
37
+ }
38
+ if (arg === "--json") {
39
+ options.json = true;
40
+ continue;
41
+ }
42
+ help(1);
43
+ }
44
+ return options;
45
+ }
46
+ async function loadEvents(path) {
47
+ const content = await readFile(path, "utf8");
48
+ const lines = content.split("\n").map((line) => line.trim()).filter(Boolean);
49
+ return lines.map((line) => JSON.parse(line));
50
+ }
51
+ function runUsage(events, asJson) {
52
+ const totals = events.reduce((acc, event) => {
53
+ acc.input += event.input_tokens;
54
+ acc.output += event.output_tokens;
55
+ acc.cost += event.estimated_cost;
56
+ acc.byModel[event.model] = (acc.byModel[event.model] ?? 0) + event.estimated_cost;
57
+ return acc;
58
+ }, { input: 0, output: 0, cost: 0, byModel: {} });
59
+ const topModels = Object.entries(totals.byModel)
60
+ .map(([model, cost]) => ({ model, cost }))
61
+ .sort((a, b) => b.cost - a.cost)
62
+ .slice(0, 5);
63
+ if (asJson) {
64
+ process.stdout.write(`${JSON.stringify({
65
+ events: events.length,
66
+ input_tokens: totals.input,
67
+ output_tokens: totals.output,
68
+ estimated_cost: totals.cost,
69
+ top_models: topModels
70
+ }, null, 2)}\n`);
71
+ return;
72
+ }
73
+ const lines = [
74
+ `Events: ${events.length}`,
75
+ `Input tokens: ${totals.input}`,
76
+ `Output tokens: ${totals.output}`,
77
+ `Estimated cost: $${totals.cost.toFixed(6)}`,
78
+ "Top models by spend:"
79
+ ];
80
+ for (const model of topModels) {
81
+ lines.push(` - ${model.model}: $${model.cost.toFixed(6)}`);
82
+ }
83
+ process.stdout.write(`${lines.join("\n")}\n`);
84
+ }
85
+ function runCompareActual(events, asJson) {
86
+ const totalInput = events.reduce((sum, event) => sum + event.input_tokens, 0);
87
+ const totalOutput = events.reduce((sum, event) => sum + event.output_tokens, 0);
88
+ const actualCost = events.reduce((sum, event) => sum + event.estimated_cost, 0);
89
+ const alternatives = Object.entries(PRICING)
90
+ .map(([model, rates]) => {
91
+ const estimated_cost = (totalInput / 1_000_000) * rates.input + (totalOutput / 1_000_000) * rates.output;
92
+ return {
93
+ model,
94
+ estimated_cost,
95
+ delta_vs_actual: estimated_cost - actualCost
96
+ };
97
+ })
98
+ .sort((a, b) => a.estimated_cost - b.estimated_cost);
99
+ const tracker = new CostwiseTracker();
100
+ const formatted = tracker.formatComparisonForCli({
101
+ model: alternatives[0]?.model ?? "unknown",
102
+ inputTokens: totalInput,
103
+ outputTokens: totalOutput
104
+ });
105
+ if (asJson) {
106
+ process.stdout.write(`${JSON.stringify({
107
+ actual: {
108
+ events: events.length,
109
+ input_tokens: totalInput,
110
+ output_tokens: totalOutput,
111
+ estimated_cost: actualCost
112
+ },
113
+ alternatives: alternatives.slice(0, 10)
114
+ }, null, 2)}\n`);
115
+ return;
116
+ }
117
+ const lines = [
118
+ `Actual usage events: ${events.length}`,
119
+ `Actual estimated cost: $${actualCost.toFixed(6)}`,
120
+ "Top alternative models (same total tokens):",
121
+ ...alternatives.slice(0, 5).map((alt) => ` - ${alt.model}: $${alt.estimated_cost.toFixed(6)} (delta ${alt.delta_vs_actual >= 0 ? "+" : ""}${alt.delta_vs_actual.toFixed(6)})`),
122
+ "",
123
+ "Cheapest-model summary:",
124
+ formatted.text
125
+ ];
126
+ process.stdout.write(`${lines.join("\n")}\n`);
127
+ }
128
+ async function main() {
129
+ const options = parse(process.argv.slice(2));
130
+ const usagePath = options.filePath ?? process.env.COSTWISE_LOCAL_USAGE_PATH;
131
+ if (!usagePath) {
132
+ process.stderr.write("Missing usage file. Set COSTWISE_LOCAL_USAGE_PATH or pass --file.\n");
133
+ process.exit(1);
134
+ }
135
+ let events = [];
136
+ try {
137
+ events = await loadEvents(usagePath);
138
+ }
139
+ catch {
140
+ process.stderr.write(`Unable to read usage file: ${usagePath}\n`);
141
+ process.exit(1);
142
+ }
143
+ if (events.length === 0) {
144
+ process.stdout.write("No usage events found.\n");
145
+ return;
146
+ }
147
+ if (options.command === "usage") {
148
+ runUsage(events, options.json);
149
+ return;
150
+ }
151
+ runCompareActual(events, options.json);
152
+ }
153
+ void main();
154
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAS5D,SAAS,IAAI,CAAC,QAAgB;IAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,kCAAkC;QAClC,EAAE;QACF,QAAQ;QACR,2CAA2C;QAC3C,oDAAoD;QACpD,EAAE;QACF,QAAQ;QACR,kFAAkF;QAClF,gDAAgD;KACjD,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CACpB,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,KAAK,CAAC,IAAc;IAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,IAAI,CAAC,CAAC,CAAC,CAAC;IACV,CAAC;IAED,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;QACpD,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,CAAC,CAAC,CAAC;IACV,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,GAAG,KAAK,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC7B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YACxB,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,CAAC;IACV,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7E,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,QAAQ,CAAC,MAAyB,EAAE,MAAe;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAC1B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACb,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC;QAChC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC;QAClC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,cAAc,CAAC;QACjC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;QAClF,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAA4B,EAAE,CACxE,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;SAC7C,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;SAC/B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEf,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,SAAS,CACf;YACE,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,YAAY,EAAE,MAAM,CAAC,KAAK;YAC1B,aAAa,EAAE,MAAM,CAAC,MAAM;YAC5B,cAAc,EAAE,MAAM,CAAC,IAAI;YAC3B,UAAU,EAAE,SAAS;SACtB,EACD,IAAI,EACJ,CAAC,CACF,IAAI,CACN,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,WAAW,MAAM,CAAC,MAAM,EAAE;QAC1B,iBAAiB,MAAM,CAAC,KAAK,EAAE;QAC/B,kBAAkB,MAAM,CAAC,MAAM,EAAE;QACjC,oBAAoB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC5C,sBAAsB;KACvB,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAyB,EAAE,MAAe;IAClE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAEhF,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;QACtB,MAAM,cAAc,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACzG,OAAO;YACL,KAAK;YACL,cAAc;YACd,eAAe,EAAE,cAAc,GAAG,UAAU;SAC7C,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAC/C,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS;QAC1C,WAAW,EAAE,UAAU;QACvB,YAAY,EAAE,WAAW;KAC1B,CAAC,CAAC;IAEH,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,SAAS,CACf;YACE,MAAM,EAAE;gBACN,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,YAAY,EAAE,UAAU;gBACxB,aAAa,EAAE,WAAW;gBAC1B,cAAc,EAAE,UAAU;aAC3B;YACD,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACxC,EACD,IAAI,EACJ,CAAC,CACF,IAAI,CACN,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,wBAAwB,MAAM,CAAC,MAAM,EAAE;QACvC,2BAA2B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAClD,6CAA6C;QAC7C,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAC7B,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAC/I;QACD,EAAE;QACF,yBAAyB;QACzB,SAAS,CAAC,IAAI;KACf,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IAC5E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,GAAsB,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,SAAS,IAAI,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,KAAK,IAAI,EAAE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export { CostwiseAnthropic } from "./src/anthropic.js";
2
2
  export { CostwiseOpenAI } from "./src/openai.js";
3
3
  export { CostwiseTracker, MODEL_CAPACITIES, PRICING } from "./src/tracker.js";
4
- export type { CostwiseOptions, IngestPayload, CliComparisonFormat, ModelCapacity, ModelCapacityClass, ModelComparison, ModelComparisonByCapacity } from "./src/types.js";
4
+ export type { CostwiseOptions, IngestPayload, CliComparisonFormat, LocalUsageEvent, ModelCapacity, ModelCapacityClass, ModelComparison, ModelComparisonByCapacity } from "./src/types.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC"}
@@ -8,6 +8,7 @@ declare const MODEL_CAPACITIES: Record<string, ModelCapacity>;
8
8
  export declare class CostwiseTracker {
9
9
  private readonly apiKey?;
10
10
  private readonly tag?;
11
+ private readonly localUsagePath?;
11
12
  constructor(options?: CostwiseOptions);
12
13
  trackUsage(snapshot: UsageSnapshot): void;
13
14
  compareCosts(snapshot: UsageSnapshot): ModelComparison[];
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,aAAa,EAEb,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA6BF,QAAA,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAGvC,CAAC;AAEF,QAAA,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAsBnD,CAAC;AAIF,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAS;gBAElB,OAAO,GAAE,eAAoB;IAKzC,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAgBzC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,eAAe,EAAE;IAqBxD,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,yBAAyB;IAgC1E,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM;IAWpD,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,mBAAmB;IA+BpE,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;CAKtB;AAED,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAGf,aAAa,EAEb,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA6BF,QAAA,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAGvC,CAAC;AAEF,QAAA,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAsBnD,CAAC;AAIF,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAS;gBAE7B,OAAO,GAAE,eAAoB;IAMzC,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IA8BzC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,eAAe,EAAE;IAqBxD,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,yBAAyB;IAgC1E,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM;IAWpD,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,mBAAmB;IA+BpE,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;CAKtB;AAED,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { appendFile } from "node:fs/promises";
1
2
  const OPENAI_PRICING = {
2
3
  "gpt-5.4": { input: 2.5, output: 15 },
3
4
  "gpt-5.4-mini": { input: 0.75, output: 4.5 },
@@ -54,23 +55,38 @@ const INGEST_URL = "https://api.costwise.dev/ingest";
54
55
  export class CostwiseTracker {
55
56
  apiKey;
56
57
  tag;
58
+ localUsagePath;
57
59
  constructor(options = {}) {
58
60
  this.apiKey = options.costwiseKey ?? options.costswiseKey ?? options.apiKey ?? process.env.COSTWISE_API_KEY;
59
61
  this.tag = options.tag;
62
+ this.localUsagePath = options.localUsagePath ?? process.env.COSTWISE_LOCAL_USAGE_PATH;
60
63
  }
61
64
  trackUsage(snapshot) {
62
65
  const payload = this.createPayload(snapshot);
63
- if (!payload || !this.apiKey) {
66
+ if (!payload) {
64
67
  return;
65
68
  }
66
- void fetch(INGEST_URL, {
67
- method: "POST",
68
- headers: {
69
- "content-type": "application/json",
70
- authorization: `Bearer ${this.apiKey}`
71
- },
72
- body: JSON.stringify(payload)
73
- }).catch(() => { });
69
+ if (this.apiKey) {
70
+ void fetch(INGEST_URL, {
71
+ method: "POST",
72
+ headers: {
73
+ "content-type": "application/json",
74
+ authorization: `Bearer ${this.apiKey}`
75
+ },
76
+ body: JSON.stringify(payload)
77
+ }).catch(() => { });
78
+ }
79
+ if (this.localUsagePath) {
80
+ const localEvent = {
81
+ model: payload.model,
82
+ input_tokens: payload.input_tokens,
83
+ output_tokens: payload.output_tokens,
84
+ estimated_cost: payload.estimated_cost,
85
+ tag: payload.tag,
86
+ timestamp: payload.timestamp
87
+ };
88
+ void appendFile(this.localUsagePath, `${JSON.stringify(localEvent)}\n`, "utf8").catch(() => { });
89
+ }
74
90
  }
75
91
  compareCosts(snapshot) {
76
92
  const currentCost = this.estimateCost(snapshot.model, snapshot.inputTokens, snapshot.outputTokens);
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/tracker.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export type CostwiseOptions = {
3
3
  costwiseKey?: string;
4
4
  costswiseKey?: string;
5
5
  tag?: string;
6
+ localUsagePath?: string;
6
7
  };
7
8
  export type IngestPayload = {
8
9
  model: string;
@@ -44,4 +45,12 @@ export type CliComparisonFormat = {
44
45
  text: string;
45
46
  lines: string[];
46
47
  };
48
+ export type LocalUsageEvent = {
49
+ model: string;
50
+ input_tokens: number;
51
+ output_tokens: number;
52
+ estimated_cost: number;
53
+ tag?: string;
54
+ timestamp: string;
55
+ };
47
56
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAEhE,+GAA+G;AAC/G,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IAChE,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAEhE,+GAA+G;AAC/G,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;IAChE,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@costwise/sdk",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "AI API cost tracking for developers",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -14,6 +14,9 @@
14
14
  "require": "./dist/cjs/index.js"
15
15
  }
16
16
  },
17
+ "bin": {
18
+ "costwise": "./dist/esm/cli.js"
19
+ },
17
20
  "files": [
18
21
  "dist",
19
22
  "README.md"
@@ -23,7 +26,9 @@
23
26
  "build:esm": "tsc -p tsconfig.esm.json",
24
27
  "build:cjs": "tsc -p tsconfig.cjs.json && node -e \"require('node:fs').writeFileSync('dist/cjs/package.json', '{\\\"type\\\":\\\"commonjs\\\"}\\n')\"",
25
28
  "smoke": "npm run build && node smoke-test.mjs",
26
- "test": "npm run build && node --test tests/**/*.test.mjs"
29
+ "test": "npm run build && node --test tests/**/*.test.mjs",
30
+ "cli:usage": "npm run build && node dist/esm/cli.js usage",
31
+ "cli:compare": "npm run build && node dist/esm/cli.js compare-actual"
27
32
  },
28
33
  "peerDependencies": {
29
34
  "@anthropic-ai/sdk": ">=0.58.0",