tokenmeter 0.9.0 → 0.9.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/README.md +220 -6
- package/dist/config.d.ts +7 -84
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -158
- package/dist/config.js.map +1 -1
- package/dist/exporter/PostgresExporter.d.ts.map +1 -1
- package/dist/exporter/PostgresExporter.js +4 -2
- package/dist/exporter/PostgresExporter.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/instrumentation/proxy.d.ts.map +1 -1
- package/dist/instrumentation/proxy.js +279 -51
- package/dist/instrumentation/proxy.js.map +1 -1
- package/dist/instrumentation/strategies/index.d.ts +33 -0
- package/dist/instrumentation/strategies/index.d.ts.map +1 -1
- package/dist/instrumentation/strategies/index.js +146 -17
- package/dist/instrumentation/strategies/index.js.map +1 -1
- package/dist/integrations/inngest/index.d.ts +0 -38
- package/dist/integrations/inngest/index.d.ts.map +1 -1
- package/dist/integrations/inngest/index.js +0 -49
- package/dist/integrations/inngest/index.js.map +1 -1
- package/dist/integrations/vercel-ai/index.d.ts.map +1 -1
- package/dist/integrations/vercel-ai/index.js +2 -1
- package/dist/integrations/vercel-ai/index.js.map +1 -1
- package/dist/pricing/manifest.bundled.d.ts +24 -0
- package/dist/pricing/manifest.bundled.d.ts.map +1 -0
- package/dist/pricing/manifest.bundled.js +13347 -0
- package/dist/pricing/manifest.bundled.js.map +1 -0
- package/dist/pricing/manifest.d.ts +24 -10
- package/dist/pricing/manifest.d.ts.map +1 -1
- package/dist/pricing/manifest.js +189 -118
- package/dist/pricing/manifest.js.map +1 -1
- package/dist/pricing/schema.d.ts +22 -13
- package/dist/pricing/schema.d.ts.map +1 -1
- package/dist/pricing/schema.js +5 -2
- package/dist/pricing/schema.js.map +1 -1
- package/dist/processor/TokenMeterProcessor.d.ts +37 -7
- package/dist/processor/TokenMeterProcessor.d.ts.map +1 -1
- package/dist/processor/TokenMeterProcessor.js +45 -24
- package/dist/processor/TokenMeterProcessor.js.map +1 -1
- package/dist/query/client.d.ts +0 -24
- package/dist/query/client.d.ts.map +1 -1
- package/dist/query/client.js +42 -9
- package/dist/query/client.js.map +1 -1
- package/dist/registry.d.ts +127 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +144 -0
- package/dist/registry.js.map +1 -0
- package/dist/types.d.ts +61 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -2
package/dist/types.d.ts
CHANGED
|
@@ -5,11 +5,22 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { Attributes } from "@opentelemetry/api";
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Runtime pricing unit types with explicit size.
|
|
9
|
+
* These are the normalized units used in the pricing manifest at runtime.
|
|
10
|
+
*
|
|
11
|
+
* @see BillingUnit in pricing/schema.ts for JSON catalog format
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* "1m_tokens" = per million tokens (most LLMs)
|
|
15
|
+
* "1k_characters" = per thousand characters (TTS)
|
|
16
|
+
* "image" = per image generated
|
|
9
17
|
*/
|
|
10
18
|
export type PricingUnit = "1m_tokens" | "1k_tokens" | "1k_characters" | "request" | "megapixel" | "second" | "minute" | "image";
|
|
11
19
|
/**
|
|
12
|
-
*
|
|
20
|
+
* Runtime model pricing entry (normalized from JSON catalog).
|
|
21
|
+
* Used by manifest.ts for cost calculation.
|
|
22
|
+
*
|
|
23
|
+
* @see CatalogModelPricing in pricing/schema.ts for JSON file format
|
|
13
24
|
*/
|
|
14
25
|
export interface ModelPricing {
|
|
15
26
|
/** Cost per input unit */
|
|
@@ -18,7 +29,7 @@ export interface ModelPricing {
|
|
|
18
29
|
output?: number;
|
|
19
30
|
/** Flat cost per request (for request-based pricing) */
|
|
20
31
|
cost?: number;
|
|
21
|
-
/** The unit for pricing */
|
|
32
|
+
/** The unit for pricing (includes size, e.g., "1m_tokens") */
|
|
22
33
|
unit: PricingUnit;
|
|
23
34
|
/** Cost for cached input (prompt caching) */
|
|
24
35
|
cachedInput?: number;
|
|
@@ -30,21 +41,47 @@ export interface ModelPricing {
|
|
|
30
41
|
cacheRead?: number;
|
|
31
42
|
}
|
|
32
43
|
/**
|
|
33
|
-
* Provider pricing catalog
|
|
44
|
+
* Provider pricing catalog (runtime format)
|
|
34
45
|
*/
|
|
35
46
|
export interface ProviderPricing {
|
|
36
47
|
[modelId: string]: ModelPricing;
|
|
37
48
|
}
|
|
38
49
|
/**
|
|
39
|
-
* Complete pricing manifest
|
|
50
|
+
* Complete pricing manifest (runtime format).
|
|
51
|
+
* This is the normalized structure used for cost calculation.
|
|
40
52
|
*/
|
|
41
53
|
export interface PricingManifest {
|
|
54
|
+
/** Manifest version */
|
|
42
55
|
version: string;
|
|
56
|
+
/** ISO 8601 timestamp of last update */
|
|
43
57
|
updatedAt: string;
|
|
58
|
+
/** Pricing data by provider */
|
|
44
59
|
providers: {
|
|
45
60
|
[providerId: string]: ProviderPricing;
|
|
46
61
|
};
|
|
47
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Progress update during streaming responses.
|
|
65
|
+
* Called on each chunk with accumulated usage data.
|
|
66
|
+
*/
|
|
67
|
+
export interface StreamingCostUpdate {
|
|
68
|
+
/** Estimated cost based on tokens processed so far (USD) */
|
|
69
|
+
estimatedCost: number;
|
|
70
|
+
/** Total input tokens processed */
|
|
71
|
+
inputTokens: number;
|
|
72
|
+
/** Total output tokens generated so far */
|
|
73
|
+
outputTokens: number;
|
|
74
|
+
/** Provider name */
|
|
75
|
+
provider: string;
|
|
76
|
+
/** Model name */
|
|
77
|
+
model: string;
|
|
78
|
+
/** Whether the stream has completed */
|
|
79
|
+
isComplete: boolean;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Callback function for streaming cost updates
|
|
83
|
+
*/
|
|
84
|
+
export type StreamingCostCallback = (update: StreamingCostUpdate) => void;
|
|
48
85
|
/**
|
|
49
86
|
* Options for the monitor() function
|
|
50
87
|
*/
|
|
@@ -55,6 +92,25 @@ export interface MonitorOptions {
|
|
|
55
92
|
provider?: string;
|
|
56
93
|
/** Custom attributes to add to all spans from this client */
|
|
57
94
|
attributes?: Attributes;
|
|
95
|
+
/**
|
|
96
|
+
* Callback invoked during streaming responses with partial cost estimates.
|
|
97
|
+
* Called on each chunk and once more on completion with isComplete=true.
|
|
98
|
+
*
|
|
99
|
+
* Note: Many APIs only report usage at stream completion, so intermediate
|
|
100
|
+
* updates may have zero values until the final update.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const client = monitor(new OpenAI(), {
|
|
105
|
+
* onStreamingCost: (update) => {
|
|
106
|
+
* if (update.isComplete) {
|
|
107
|
+
* console.log(`Final cost: $${update.estimatedCost.toFixed(6)}`);
|
|
108
|
+
* }
|
|
109
|
+
* }
|
|
110
|
+
* });
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
onStreamingCost?: StreamingCostCallback;
|
|
58
114
|
}
|
|
59
115
|
/**
|
|
60
116
|
* Usage data extracted from API responses
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkRH,+EAA+E;AAC/E,yCAAyC;AACzC,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,6BAA6B;IAC7B,QAAQ,EAAE,qBAAqB;IAC/B,oBAAoB;IACpB,QAAQ,EAAE,qBAAqB;IAC/B,iBAAiB;IACjB,KAAK,EAAE,kBAAkB;IACzB,wBAAwB;IACxB,IAAI,EAAE,iBAAiB;IACvB,2BAA2B;IAC3B,WAAW,EAAE,wBAAwB;IACrC,4BAA4B;IAC5B,YAAY,EAAE,yBAAyB;IACvC,4CAA4C;IAC5C,MAAM,EAAE,QAAQ;IAChB,oCAAoC;IACpC,OAAO,EAAE,SAAS;IAClB,wCAAwC;IACxC,WAAW,EAAE,aAAa;CAClB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,mBAAmB;IACnB,YAAY,EAAE,2BAA2B;IACzC,oBAAoB;IACpB,aAAa,EAAE,4BAA4B;IAC3C,iBAAiB;IACjB,KAAK,EAAE,sBAAsB;IAC7B,sBAAsB;IACtB,MAAM,EAAE,eAAe;CACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tokenmeter",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "OpenTelemetry-native cost tracking for AI workflows",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -44,7 +44,8 @@
|
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
"scripts": {
|
|
47
|
-
"build": "tsc && npm run build:pricing",
|
|
47
|
+
"build": "npm run build:manifest && tsc && npm run build:pricing",
|
|
48
|
+
"build:manifest": "npx tsx scripts/build-manifest.ts",
|
|
48
49
|
"build:pricing": "mkdir -p dist/pricing && cp src/pricing/manifest.json dist/pricing/manifest.json",
|
|
49
50
|
"dev": "tsc --watch",
|
|
50
51
|
"lint": "eslint . --max-warnings 0",
|