@uselemma/tracing 7.8.1 → 7.10.0
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 +15 -12
- package/dist/client.d.ts +23 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +45 -4
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/langchain.d.ts +7 -5
- package/dist/langchain.d.ts.map +1 -1
- package/dist/langchain.js +106 -48
- package/dist/langchain.js.map +1 -1
- package/dist/mastra.d.ts +8 -2
- package/dist/mastra.d.ts.map +1 -1
- package/dist/mastra.js +54 -22
- package/dist/mastra.js.map +1 -1
- package/dist/openai-agents.d.ts +6 -2
- package/dist/openai-agents.d.ts.map +1 -1
- package/dist/openai-agents.js +55 -22
- package/dist/openai-agents.js.map +1 -1
- package/dist/release.d.ts +7 -0
- package/dist/release.d.ts.map +1 -0
- package/dist/release.js +23 -0
- package/dist/release.js.map +1 -0
- package/dist/schedule.d.ts +3 -0
- package/dist/schedule.d.ts.map +1 -0
- package/dist/schedule.js +12 -0
- package/dist/schedule.js.map +1 -0
- package/dist/usage.d.ts +65 -0
- package/dist/usage.d.ts.map +1 -0
- package/dist/usage.js +272 -0
- package/dist/usage.js.map +1 -0
- package/dist/vercel-ai.d.ts +27 -3
- package/dist/vercel-ai.d.ts.map +1 -1
- package/dist/vercel-ai.js +92 -71
- package/dist/vercel-ai.js.map +1 -1
- package/examples/langchain.ts +1 -0
- package/examples/langgraph.ts +1 -0
- package/examples/mastra.ts +4 -1
- package/package.json +1 -1
package/dist/usage.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token usage for a generation span (TypeScript DX — camelCase).
|
|
3
|
+
*
|
|
4
|
+
* Wire format uses snake_case (`input_tokens`, …). Omit fields the provider
|
|
5
|
+
* did not supply; never invent zeros. Explicit zeros are emitted so Analytics
|
|
6
|
+
* can distinguish healthy zero from missing instrumentation.
|
|
7
|
+
*/
|
|
8
|
+
export type TokenUsage = {
|
|
9
|
+
inputTokens?: number;
|
|
10
|
+
outputTokens?: number;
|
|
11
|
+
cacheReadInputTokens?: number;
|
|
12
|
+
cacheCreationInputTokens?: number;
|
|
13
|
+
reasoningOutputTokens?: number;
|
|
14
|
+
};
|
|
15
|
+
/** Ingest JSON top-level `usage` object (snake_case). */
|
|
16
|
+
export type WireTokenUsage = {
|
|
17
|
+
input_tokens?: number;
|
|
18
|
+
output_tokens?: number;
|
|
19
|
+
cache_read_input_tokens?: number;
|
|
20
|
+
cache_creation_input_tokens?: number;
|
|
21
|
+
reasoning_output_tokens?: number;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Normalize provider-specific usage shapes into TokenUsage.
|
|
25
|
+
*
|
|
26
|
+
* Accepts camelCase / snake_case / prompt+completion aliases, OpenAI nested
|
|
27
|
+
* details, Anthropic cache fields, Vercel AI SDK, LangChain tokenUsage /
|
|
28
|
+
* usage_metadata, and Mastra when input/output are distinguishable.
|
|
29
|
+
*
|
|
30
|
+
* `totalTokens` alone is not enough — do not invent an input/output split.
|
|
31
|
+
* Returns undefined when nothing usable is present.
|
|
32
|
+
*/
|
|
33
|
+
export declare function normalizeTokenUsage(raw: unknown): TokenUsage | undefined;
|
|
34
|
+
/** Operation result shapes that may carry token usage after a framework event. */
|
|
35
|
+
export type OperationUsageResult = {
|
|
36
|
+
usage?: unknown;
|
|
37
|
+
totalUsage?: unknown;
|
|
38
|
+
steps?: ReadonlyArray<{
|
|
39
|
+
usage?: unknown;
|
|
40
|
+
}>;
|
|
41
|
+
usage_metadata?: unknown;
|
|
42
|
+
response_metadata?: unknown;
|
|
43
|
+
rawResponses?: ReadonlyArray<{
|
|
44
|
+
usage?: unknown;
|
|
45
|
+
}>;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Copy operation-result usage onto existing generation spans.
|
|
49
|
+
*
|
|
50
|
+
* One generation → `totalUsage` / `usage` so a multi-step call is not
|
|
51
|
+
* undercounted. Several generations → per-step (or `rawResponses`) usage in
|
|
52
|
+
* order. Never write the same total onto every span.
|
|
53
|
+
*
|
|
54
|
+
* Spans that already have usage are left alone. Returns the number of spans
|
|
55
|
+
* that received usage.
|
|
56
|
+
*/
|
|
57
|
+
export declare function attachResultUsage(generations: Array<{
|
|
58
|
+
usage?: WireTokenUsage;
|
|
59
|
+
attributes?: Record<string, unknown>;
|
|
60
|
+
}>, result: unknown): number;
|
|
61
|
+
/** Convert TokenUsage to the ingest wire object. Omits undefined fields. */
|
|
62
|
+
export declare function toWireTokenUsage(usage: TokenUsage | undefined): WireTokenUsage | undefined;
|
|
63
|
+
/** Flatten TokenUsage into GenAI + OpenInference attribute keys. */
|
|
64
|
+
export declare function tokenUsageAttributes(usage: TokenUsage | undefined): Record<string, number>;
|
|
65
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAyBF;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAiIxE;AAED,kFAAkF;AAClF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,aAAa,CAAC;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACnD,CAAC;AAsDF;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC,EACF,MAAM,EAAE,OAAO,GACd,MAAM,CAoBR;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,UAAU,GAAG,SAAS,GAC5B,cAAc,GAAG,SAAS,CAe5B;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,GAAG,SAAS,GAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBxB"}
|
package/dist/usage.js
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeTokenUsage = normalizeTokenUsage;
|
|
4
|
+
exports.attachResultUsage = attachResultUsage;
|
|
5
|
+
exports.toWireTokenUsage = toWireTokenUsage;
|
|
6
|
+
exports.tokenUsageAttributes = tokenUsageAttributes;
|
|
7
|
+
function asFiniteNumber(value) {
|
|
8
|
+
if (typeof value !== "number" || !Number.isFinite(value))
|
|
9
|
+
return undefined;
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
function pickNumber(source, keys) {
|
|
13
|
+
for (const key of keys) {
|
|
14
|
+
const value = asFiniteNumber(source[key]);
|
|
15
|
+
if (value !== undefined)
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
function asRecord(value) {
|
|
21
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Normalize provider-specific usage shapes into TokenUsage.
|
|
28
|
+
*
|
|
29
|
+
* Accepts camelCase / snake_case / prompt+completion aliases, OpenAI nested
|
|
30
|
+
* details, Anthropic cache fields, Vercel AI SDK, LangChain tokenUsage /
|
|
31
|
+
* usage_metadata, and Mastra when input/output are distinguishable.
|
|
32
|
+
*
|
|
33
|
+
* `totalTokens` alone is not enough — do not invent an input/output split.
|
|
34
|
+
* Returns undefined when nothing usable is present.
|
|
35
|
+
*/
|
|
36
|
+
function normalizeTokenUsage(raw) {
|
|
37
|
+
if (raw == null)
|
|
38
|
+
return undefined;
|
|
39
|
+
let source = asRecord(raw);
|
|
40
|
+
if (!source)
|
|
41
|
+
return undefined;
|
|
42
|
+
// LangChain / wrappers sometimes nest under tokenUsage / usage_metadata / usage.
|
|
43
|
+
const nested = asRecord(source.tokenUsage) ??
|
|
44
|
+
asRecord(source.token_usage) ??
|
|
45
|
+
asRecord(source.usage_metadata) ??
|
|
46
|
+
asRecord(source.usage);
|
|
47
|
+
// Prefer nested when the outer object only wraps it (no top-level token fields).
|
|
48
|
+
if (nested) {
|
|
49
|
+
const outerHasTokens = pickNumber(source, [
|
|
50
|
+
"inputTokens",
|
|
51
|
+
"input_tokens",
|
|
52
|
+
"promptTokens",
|
|
53
|
+
"prompt_tokens",
|
|
54
|
+
"outputTokens",
|
|
55
|
+
"output_tokens",
|
|
56
|
+
"completionTokens",
|
|
57
|
+
"completion_tokens",
|
|
58
|
+
]) !== undefined;
|
|
59
|
+
if (!outerHasTokens)
|
|
60
|
+
source = nested;
|
|
61
|
+
}
|
|
62
|
+
const inputTokens = pickNumber(source, [
|
|
63
|
+
"inputTokens",
|
|
64
|
+
"input_tokens",
|
|
65
|
+
"promptTokens",
|
|
66
|
+
"prompt_tokens",
|
|
67
|
+
]);
|
|
68
|
+
const outputTokens = pickNumber(source, [
|
|
69
|
+
"outputTokens",
|
|
70
|
+
"output_tokens",
|
|
71
|
+
"completionTokens",
|
|
72
|
+
"completion_tokens",
|
|
73
|
+
]);
|
|
74
|
+
// Nested detail containers across providers / SDKs:
|
|
75
|
+
// - Chat Completions: prompt_tokens_details / completion_tokens_details
|
|
76
|
+
// - Responses / OpenAI Agents: input_tokens_details / output_tokens_details
|
|
77
|
+
// - AI SDK 7: inputTokenDetails / outputTokenDetails
|
|
78
|
+
const promptDetails = asRecord(source.prompt_tokens_details) ??
|
|
79
|
+
asRecord(source.promptTokensDetails) ??
|
|
80
|
+
asRecord(source.input_tokens_details) ??
|
|
81
|
+
asRecord(source.inputTokensDetails) ??
|
|
82
|
+
asRecord(source.input_token_details) ??
|
|
83
|
+
asRecord(source.inputTokenDetails);
|
|
84
|
+
const completionDetails = asRecord(source.completion_tokens_details) ??
|
|
85
|
+
asRecord(source.completionTokensDetails) ??
|
|
86
|
+
asRecord(source.output_tokens_details) ??
|
|
87
|
+
asRecord(source.outputTokensDetails) ??
|
|
88
|
+
asRecord(source.output_token_details) ??
|
|
89
|
+
asRecord(source.outputTokenDetails);
|
|
90
|
+
let cacheReadInputTokens = pickNumber(source, [
|
|
91
|
+
"cacheReadInputTokens",
|
|
92
|
+
"cache_read_input_tokens",
|
|
93
|
+
"cachedInputTokens",
|
|
94
|
+
"cached_input_tokens",
|
|
95
|
+
"cache_read",
|
|
96
|
+
]);
|
|
97
|
+
if (cacheReadInputTokens === undefined && promptDetails) {
|
|
98
|
+
cacheReadInputTokens = pickNumber(promptDetails, [
|
|
99
|
+
"cached_tokens",
|
|
100
|
+
"cachedTokens",
|
|
101
|
+
"cache_read",
|
|
102
|
+
"cacheRead",
|
|
103
|
+
// AI SDK 7 LanguageModelUsage.inputTokenDetails
|
|
104
|
+
"cacheReadTokens",
|
|
105
|
+
"cache_read_tokens",
|
|
106
|
+
]);
|
|
107
|
+
}
|
|
108
|
+
let cacheCreationInputTokens = pickNumber(source, [
|
|
109
|
+
"cacheCreationInputTokens",
|
|
110
|
+
"cache_creation_input_tokens",
|
|
111
|
+
"cache_creation",
|
|
112
|
+
"cacheWriteTokens",
|
|
113
|
+
"cache_write_tokens",
|
|
114
|
+
]);
|
|
115
|
+
if (cacheCreationInputTokens === undefined && promptDetails) {
|
|
116
|
+
cacheCreationInputTokens = pickNumber(promptDetails, [
|
|
117
|
+
"cache_creation",
|
|
118
|
+
"cacheCreation",
|
|
119
|
+
"cache_write",
|
|
120
|
+
"cacheWrite",
|
|
121
|
+
// OpenAI Responses / Agents + AI SDK 7
|
|
122
|
+
"cache_write_tokens",
|
|
123
|
+
"cacheWriteTokens",
|
|
124
|
+
]);
|
|
125
|
+
}
|
|
126
|
+
let reasoningOutputTokens = pickNumber(source, [
|
|
127
|
+
"reasoningOutputTokens",
|
|
128
|
+
"reasoning_output_tokens",
|
|
129
|
+
"reasoningTokens",
|
|
130
|
+
"reasoning_tokens",
|
|
131
|
+
]);
|
|
132
|
+
if (reasoningOutputTokens === undefined && completionDetails) {
|
|
133
|
+
reasoningOutputTokens = pickNumber(completionDetails, [
|
|
134
|
+
"reasoning_tokens",
|
|
135
|
+
"reasoningTokens",
|
|
136
|
+
"reasoning",
|
|
137
|
+
]);
|
|
138
|
+
}
|
|
139
|
+
const usage = {};
|
|
140
|
+
if (inputTokens !== undefined)
|
|
141
|
+
usage.inputTokens = inputTokens;
|
|
142
|
+
if (outputTokens !== undefined)
|
|
143
|
+
usage.outputTokens = outputTokens;
|
|
144
|
+
if (cacheReadInputTokens !== undefined) {
|
|
145
|
+
usage.cacheReadInputTokens = cacheReadInputTokens;
|
|
146
|
+
}
|
|
147
|
+
if (cacheCreationInputTokens !== undefined) {
|
|
148
|
+
usage.cacheCreationInputTokens = cacheCreationInputTokens;
|
|
149
|
+
}
|
|
150
|
+
if (reasoningOutputTokens !== undefined) {
|
|
151
|
+
usage.reasoningOutputTokens = reasoningOutputTokens;
|
|
152
|
+
}
|
|
153
|
+
// totalTokens alone is not enough to populate input/output — omit rather
|
|
154
|
+
// than invent a split (e.g. Mastra `{ totalTokens }` only).
|
|
155
|
+
if (Object.keys(usage).length === 0)
|
|
156
|
+
return undefined;
|
|
157
|
+
return usage;
|
|
158
|
+
}
|
|
159
|
+
function asUsageResult(raw) {
|
|
160
|
+
return asRecord(raw);
|
|
161
|
+
}
|
|
162
|
+
function resultStepUsages(result) {
|
|
163
|
+
if (Array.isArray(result.steps)) {
|
|
164
|
+
return result.steps.map((step) => normalizeTokenUsage(step?.usage));
|
|
165
|
+
}
|
|
166
|
+
if (Array.isArray(result.rawResponses)) {
|
|
167
|
+
return result.rawResponses.map((response) => normalizeTokenUsage(response?.usage));
|
|
168
|
+
}
|
|
169
|
+
return [];
|
|
170
|
+
}
|
|
171
|
+
function resultTotalUsage(result) {
|
|
172
|
+
return (normalizeTokenUsage(result.totalUsage) ??
|
|
173
|
+
normalizeTokenUsage(result.usage) ??
|
|
174
|
+
normalizeTokenUsage(result.usage_metadata) ??
|
|
175
|
+
normalizeTokenUsage(result.response_metadata) ??
|
|
176
|
+
normalizeTokenUsage(result));
|
|
177
|
+
}
|
|
178
|
+
function spanHasUsage(span) {
|
|
179
|
+
return span.usage != null && Object.keys(span.usage).length > 0;
|
|
180
|
+
}
|
|
181
|
+
function stampSpanUsage(span, usage) {
|
|
182
|
+
if (!usage || spanHasUsage(span))
|
|
183
|
+
return false;
|
|
184
|
+
const wire = toWireTokenUsage(usage);
|
|
185
|
+
if (!wire)
|
|
186
|
+
return false;
|
|
187
|
+
span.usage = wire;
|
|
188
|
+
span.attributes = {
|
|
189
|
+
...span.attributes,
|
|
190
|
+
...tokenUsageAttributes(usage),
|
|
191
|
+
};
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Copy operation-result usage onto existing generation spans.
|
|
196
|
+
*
|
|
197
|
+
* One generation → `totalUsage` / `usage` so a multi-step call is not
|
|
198
|
+
* undercounted. Several generations → per-step (or `rawResponses`) usage in
|
|
199
|
+
* order. Never write the same total onto every span.
|
|
200
|
+
*
|
|
201
|
+
* Spans that already have usage are left alone. Returns the number of spans
|
|
202
|
+
* that received usage.
|
|
203
|
+
*/
|
|
204
|
+
function attachResultUsage(generations, result) {
|
|
205
|
+
if (generations.length === 0)
|
|
206
|
+
return 0;
|
|
207
|
+
const parsed = asUsageResult(result);
|
|
208
|
+
if (!parsed)
|
|
209
|
+
return 0;
|
|
210
|
+
const steps = resultStepUsages(parsed);
|
|
211
|
+
const total = resultTotalUsage(parsed);
|
|
212
|
+
if (generations.length === 1) {
|
|
213
|
+
return stampSpanUsage(generations[0], total ?? steps[0]) ? 1 : 0;
|
|
214
|
+
}
|
|
215
|
+
let stamped = 0;
|
|
216
|
+
for (let i = 0; i < generations.length; i += 1) {
|
|
217
|
+
if (stampSpanUsage(generations[i], steps[i]))
|
|
218
|
+
stamped += 1;
|
|
219
|
+
}
|
|
220
|
+
if (stamped === 0 && total) {
|
|
221
|
+
return stampSpanUsage(generations[0], total) ? 1 : 0;
|
|
222
|
+
}
|
|
223
|
+
return stamped;
|
|
224
|
+
}
|
|
225
|
+
/** Convert TokenUsage to the ingest wire object. Omits undefined fields. */
|
|
226
|
+
function toWireTokenUsage(usage) {
|
|
227
|
+
if (!usage)
|
|
228
|
+
return undefined;
|
|
229
|
+
const wire = {};
|
|
230
|
+
if (usage.inputTokens !== undefined)
|
|
231
|
+
wire.input_tokens = usage.inputTokens;
|
|
232
|
+
if (usage.outputTokens !== undefined)
|
|
233
|
+
wire.output_tokens = usage.outputTokens;
|
|
234
|
+
if (usage.cacheReadInputTokens !== undefined) {
|
|
235
|
+
wire.cache_read_input_tokens = usage.cacheReadInputTokens;
|
|
236
|
+
}
|
|
237
|
+
if (usage.cacheCreationInputTokens !== undefined) {
|
|
238
|
+
wire.cache_creation_input_tokens = usage.cacheCreationInputTokens;
|
|
239
|
+
}
|
|
240
|
+
if (usage.reasoningOutputTokens !== undefined) {
|
|
241
|
+
wire.reasoning_output_tokens = usage.reasoningOutputTokens;
|
|
242
|
+
}
|
|
243
|
+
return Object.keys(wire).length > 0 ? wire : undefined;
|
|
244
|
+
}
|
|
245
|
+
/** Flatten TokenUsage into GenAI + OpenInference attribute keys. */
|
|
246
|
+
function tokenUsageAttributes(usage) {
|
|
247
|
+
if (!usage)
|
|
248
|
+
return {};
|
|
249
|
+
const attributes = {};
|
|
250
|
+
if (usage.inputTokens !== undefined) {
|
|
251
|
+
attributes["gen_ai.usage.input_tokens"] = usage.inputTokens;
|
|
252
|
+
attributes["llm.token_count.prompt"] = usage.inputTokens;
|
|
253
|
+
}
|
|
254
|
+
if (usage.outputTokens !== undefined) {
|
|
255
|
+
attributes["gen_ai.usage.output_tokens"] = usage.outputTokens;
|
|
256
|
+
attributes["llm.token_count.completion"] = usage.outputTokens;
|
|
257
|
+
}
|
|
258
|
+
if (usage.cacheReadInputTokens !== undefined) {
|
|
259
|
+
attributes["gen_ai.usage.cache_read.input_tokens"] =
|
|
260
|
+
usage.cacheReadInputTokens;
|
|
261
|
+
}
|
|
262
|
+
if (usage.cacheCreationInputTokens !== undefined) {
|
|
263
|
+
attributes["gen_ai.usage.cache_creation.input_tokens"] =
|
|
264
|
+
usage.cacheCreationInputTokens;
|
|
265
|
+
}
|
|
266
|
+
if (usage.reasoningOutputTokens !== undefined) {
|
|
267
|
+
attributes["gen_ai.usage.reasoning.output_tokens"] =
|
|
268
|
+
usage.reasoningOutputTokens;
|
|
269
|
+
}
|
|
270
|
+
return attributes;
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"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"}
|
package/dist/vercel-ai.d.ts
CHANGED
|
@@ -15,6 +15,11 @@ type VercelAIModelCallEndEvent = {
|
|
|
15
15
|
performance: {
|
|
16
16
|
responseTimeMs?: number;
|
|
17
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* Token usage when the AI SDK / provider exposes it on the finish event.
|
|
20
|
+
* Not reliably present on all AI SDK versions today — extract when set.
|
|
21
|
+
*/
|
|
22
|
+
usage?: unknown;
|
|
18
23
|
};
|
|
19
24
|
type VercelAIEndEvent = {
|
|
20
25
|
text?: string;
|
|
@@ -22,6 +27,9 @@ type VercelAIEndEvent = {
|
|
|
22
27
|
functionId?: string;
|
|
23
28
|
metadata?: Record<string, unknown>;
|
|
24
29
|
error?: unknown;
|
|
30
|
+
/** Optional usage when a future AI SDK finish payload includes it. */
|
|
31
|
+
usage?: unknown;
|
|
32
|
+
totalUsage?: unknown;
|
|
25
33
|
};
|
|
26
34
|
type VercelAIToolExecutionEndEvent = {
|
|
27
35
|
callId?: string;
|
|
@@ -74,6 +82,9 @@ type VercelAIStepEndEvent = {
|
|
|
74
82
|
input?: unknown;
|
|
75
83
|
}>;
|
|
76
84
|
error?: unknown;
|
|
85
|
+
/** Optional usage when present on step end. */
|
|
86
|
+
usage?: unknown;
|
|
87
|
+
totalUsage?: unknown;
|
|
77
88
|
};
|
|
78
89
|
type VercelAIV6ModelInfo = {
|
|
79
90
|
provider: string;
|
|
@@ -95,6 +106,9 @@ type VercelAIV6StepFinishEvent = {
|
|
|
95
106
|
functionId?: string;
|
|
96
107
|
metadata?: Record<string, unknown>;
|
|
97
108
|
error?: unknown;
|
|
109
|
+
/** Optional usage when present on step finish. */
|
|
110
|
+
usage?: unknown;
|
|
111
|
+
totalUsage?: unknown;
|
|
98
112
|
};
|
|
99
113
|
type VercelAIV6StartEvent = {
|
|
100
114
|
model: VercelAIV6ModelInfo;
|
|
@@ -112,6 +126,12 @@ type VercelAIV6FinishEvent = {
|
|
|
112
126
|
functionId?: string;
|
|
113
127
|
metadata?: Record<string, unknown>;
|
|
114
128
|
error?: unknown;
|
|
129
|
+
/**
|
|
130
|
+
* Token usage when the AI SDK finish payload includes it. Often omitted on
|
|
131
|
+
* AI SDK 6 `experimental_telemetry` even when `generateText` returns tokens.
|
|
132
|
+
*/
|
|
133
|
+
usage?: unknown;
|
|
134
|
+
totalUsage?: unknown;
|
|
115
135
|
};
|
|
116
136
|
type VercelAIV6ToolCallFinishEvent = {
|
|
117
137
|
toolCall: {
|
|
@@ -144,7 +164,12 @@ export type VercelAITelemetryIntegration = {
|
|
|
144
164
|
onToolCallFinish?: (event: VercelAIV6ToolCallFinishEvent) => MaybePromise<void>;
|
|
145
165
|
/** Mark the active run as failed and end the owned trace. */
|
|
146
166
|
fail: (error: unknown) => Promise<void>;
|
|
147
|
-
/**
|
|
167
|
+
/**
|
|
168
|
+
* Optional. Copy token usage from a `generateText` / `streamText` result
|
|
169
|
+
* onto generation spans whose telemetry event omitted it.
|
|
170
|
+
*/
|
|
171
|
+
recordResult: (result: unknown) => number;
|
|
172
|
+
/** Send the integration's completed traces and await ingest delivery. */
|
|
148
173
|
flush: () => Promise<void>;
|
|
149
174
|
/** Flush and reset integration state for short-lived runtimes. */
|
|
150
175
|
shutdown: () => Promise<void>;
|
|
@@ -156,12 +181,11 @@ export type VercelAIIntegrationOptions = {
|
|
|
156
181
|
projectId?: LemmaClientOptions["projectId"];
|
|
157
182
|
baseUrl?: LemmaClientOptions["baseUrl"];
|
|
158
183
|
fetch?: LemmaClientOptions["fetch"];
|
|
184
|
+
release?: LemmaClientOptions["release"];
|
|
159
185
|
agentName?: string;
|
|
160
186
|
generationName?: string | ((event: VercelAIModelCallEndEvent | VercelAIV6StepFinishEvent | VercelAIV6FinishEvent) => string);
|
|
161
187
|
toolName?: string | ((event: VercelAIToolExecutionEndEvent | VercelAIV6ToolCallFinishEvent) => string);
|
|
162
188
|
metadata?: Record<string, unknown>;
|
|
163
|
-
recordInputs?: boolean;
|
|
164
|
-
recordOutputs?: boolean;
|
|
165
189
|
/** Key looked up on telemetry metadata for threadId. Default: `threadId`. */
|
|
166
190
|
threadIdKey?: string;
|
|
167
191
|
/** Key looked up on telemetry metadata for userId. Default: `userId`. */
|
package/dist/vercel-ai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-ai.d.ts","sourceRoot":"","sources":["../src/vercel-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,KAAK,kBAAkB,EAEvB,KAAK,YAAY,EAElB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"vercel-ai.d.ts","sourceRoot":"","sources":["../src/vercel-ai.ts"],"names":[],"mappings":"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"}
|