@moduna/otel 1.1.3 → 1.1.5

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
@@ -121,10 +121,16 @@ const result = await model.invoke("Hello, world!", {
121
121
  });
122
122
  ```
123
123
 
124
+ Enable callback trace lifecycle logs while debugging instrumentation.
125
+
126
+ ```ts
127
+ const handler = otel.langChainHandler({}, { debug: true });
128
+ ```
129
+
124
130
  Or register it globally for all LangChain runs.
125
131
 
126
132
  ```ts
127
- otel.registerGlobalLangChainHandler();
133
+ otel.registerGlobalLangChainHandler({}, { debug: true });
128
134
 
129
135
  const result = await model.invoke("Hello, world!", {
130
136
  metadata: {
@@ -43,3 +43,4 @@ export type ModunaOTELConfig = ModunaOTELBaseConfig & ({
43
43
  sdkIntegration: ModunaOTELSDKIntegration;
44
44
  });
45
45
  export {};
46
+ //# sourceMappingURL=ModunaOTELConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModunaOTELConfig.d.ts","sourceRoot":"","sources":["../../interface/ModunaOTELConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,mBAAmB,EACnB,wBAAwB,EAC3B,MAAM,0BAA0B,CAAC;AAElC;;GAEG;AACH,UAAU,oBAAoB;IAC1B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAC/C,CACM;IACI;;OAEG;IACH,SAAS,EAAE,mBAAmB,CAAC;IAE/B;;OAEG;IACH,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC7C,GACD;IACI;;OAEG;IACH,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAEhC;;OAEG;IACH,cAAc,EAAE,wBAAwB,CAAC;CAC5C,CACN,CAAC"}
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=ModunaOTELConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModunaOTELConfig.js","sourceRoot":"","sources":["../../interface/ModunaOTELConfig.ts"],"names":[],"mappings":""}
@@ -7,6 +7,14 @@ import type { ModunaTraceContext } from "../types/TraceContext.js";
7
7
  * Configuration for Moduna's LangChain callback handler.
8
8
  */
9
9
  export interface ModunaLangChainCallbackHandlerConfig {
10
+ /**
11
+ * Enables trace lifecycle logging for LangChain callback events.
12
+ */
13
+ debug?: boolean;
14
+ /**
15
+ * Logger used when debug trace logging is enabled.
16
+ */
17
+ logger?: Pick<Console, "debug" | "error">;
10
18
  /**
11
19
  * Default trace identifiers used when a LangChain call has no metadata.
12
20
  */
@@ -20,7 +28,9 @@ export declare class ModunaLangChainCallbackHandler extends BaseCallbackHandler
20
28
  * Stable handler name used by LangChain callback manager de-duplication.
21
29
  */
22
30
  name: string;
31
+ private readonly debug;
23
32
  private readonly defaultTraceContext;
33
+ private readonly logger;
24
34
  private readonly runs;
25
35
  /**
26
36
  * Creates a LangChain callback handler for Moduna spans.
@@ -77,9 +87,174 @@ export declare class ModunaLangChainCallbackHandler extends BaseCallbackHandler
77
87
  */
78
88
  handleLLMError(error: unknown, runId: string): void;
79
89
  private startRun;
90
+ /**
91
+ * Applies model/provider attributes using LangChain serialization metadata.
92
+ *
93
+ * @param span Span receiving model attributes.
94
+ * @param llm Serialized LangChain model metadata.
95
+ * @param extraParams Provider-specific invocation parameters.
96
+ */
80
97
  private applyModelAttributes;
98
+ /**
99
+ * Applies Moduna conversation and session identifiers to a span.
100
+ *
101
+ * @param span Span receiving trace context attributes.
102
+ * @param metadata LangChain metadata supplied on the run.
103
+ */
81
104
  private applyTraceContext;
105
+ /**
106
+ * Applies prompt input attributes in LangSmith-compatible GenAI format.
107
+ *
108
+ * @param span Span receiving prompt attributes.
109
+ * @param messages Normalized prompt messages.
110
+ */
111
+ private applyPromptAttributes;
112
+ /**
113
+ * Applies request parameter attributes in GenAI semantic format.
114
+ *
115
+ * @param span Span receiving invocation parameter attributes.
116
+ * @param extraParams Provider-specific invocation parameters.
117
+ */
118
+ private applyInvocationAttributes;
119
+ /**
120
+ * Applies model completion output attributes from a LangChain result.
121
+ *
122
+ * @param span Span receiving completion attributes.
123
+ * @param output LangChain LLM output.
124
+ */
125
+ private applyCompletionAttributes;
126
+ /**
127
+ * Applies token usage attributes from a LangChain result.
128
+ *
129
+ * @param span Span receiving usage attributes.
130
+ * @param output LangChain LLM output.
131
+ * @param streamedTokenCount Token count observed from streaming callbacks.
132
+ */
133
+ private applyUsageAttributes;
134
+ /**
135
+ * Extracts token usage from LangChain result metadata and provider outputs.
136
+ *
137
+ * @param output LangChain LLM output.
138
+ * @returns Normalized token usage when present.
139
+ */
140
+ private extractUsage;
141
+ /**
142
+ * Finds the first message usage metadata in a LangChain result.
143
+ *
144
+ * @param output LangChain LLM output.
145
+ * @returns Usage metadata record when present.
146
+ */
147
+ private getFirstUsageMetadata;
148
+ /**
149
+ * Finds the model name returned by the provider, when available.
150
+ *
151
+ * @param output LangChain LLM output.
152
+ * @returns Provider response model name when present.
153
+ */
154
+ private getResponseModel;
155
+ /**
156
+ * Counts all generated candidates in a LangChain result.
157
+ *
158
+ * @param output LangChain LLM output.
159
+ * @returns Total generation candidate count.
160
+ */
161
+ private countGenerations;
162
+ /**
163
+ * Converts batches of LangChain messages to flat normalized messages.
164
+ *
165
+ * @param messageBatches LangChain message batches.
166
+ * @returns Flat list of normalized prompt messages.
167
+ */
168
+ private normalizeMessageBatches;
169
+ /**
170
+ * Converts a LangChain message to a GenAI-compatible role/content pair.
171
+ *
172
+ * @param message LangChain base message.
173
+ * @returns Normalized message.
174
+ */
175
+ private normalizeMessage;
176
+ /**
177
+ * Converts LangChain message types to GenAI/OpenAI role names.
178
+ *
179
+ * @param type LangChain message type.
180
+ * @returns Role name for telemetry.
181
+ */
182
+ private mapMessageRole;
183
+ /**
184
+ * Extracts a normalized chat generation message when one exists.
185
+ *
186
+ * @param generation LangChain generation candidate.
187
+ * @returns Normalized generation message when present.
188
+ */
189
+ private getGenerationMessage;
190
+ /**
191
+ * Extracts a message-shaped value from a LangChain generation.
192
+ *
193
+ * @param generation LangChain generation candidate.
194
+ * @returns Message-shaped record when present.
195
+ */
196
+ private getMessageLike;
197
+ /**
198
+ * Infers a provider name from serialized model metadata.
199
+ *
200
+ * @param llm Serialized LangChain model metadata.
201
+ * @param modelName Model name used for the request.
202
+ * @returns Provider name for GenAI attributes.
203
+ */
204
+ private inferProvider;
205
+ /**
206
+ * Sets a span attribute when the value is OpenTelemetry-compatible.
207
+ *
208
+ * @param span Span receiving the attribute.
209
+ * @param key Attribute key.
210
+ * @param value Attribute value.
211
+ */
212
+ private setAttributeIfSupported;
213
+ /**
214
+ * Emits a debug trace lifecycle log when debug mode is enabled.
215
+ *
216
+ * @param event Trace lifecycle event name.
217
+ * @param span Span associated with the lifecycle event.
218
+ * @param payload Additional event fields.
219
+ */
220
+ private debugLog;
221
+ /**
222
+ * Converts arbitrary values to supported OpenTelemetry attribute values.
223
+ *
224
+ * @param value Unknown source value.
225
+ * @returns OpenTelemetry attribute value when representable.
226
+ */
227
+ private toAttributeValue;
228
+ /**
229
+ * Reads an object-valued property from a record-like value.
230
+ *
231
+ * @param value Record-like source value.
232
+ * @param key Property key.
233
+ * @returns Nested record when present.
234
+ */
235
+ private getRecord;
236
+ /**
237
+ * Reads a string-valued property from a record-like value.
238
+ *
239
+ * @param value Record-like source value.
240
+ * @param key Property key.
241
+ * @returns String property when present.
242
+ */
82
243
  private getString;
244
+ /**
245
+ * Reads a number-valued property from a record-like value.
246
+ *
247
+ * @param value Record-like source value.
248
+ * @param key Property key.
249
+ * @returns Number property when present.
250
+ */
251
+ private getNumber;
252
+ /**
253
+ * Normalizes unknown errors to Error instances.
254
+ *
255
+ * @param error Unknown error value.
256
+ * @returns Error instance.
257
+ */
83
258
  private toError;
84
259
  }
85
260
  /**
@@ -88,3 +263,4 @@ export declare class ModunaLangChainCallbackHandler extends BaseCallbackHandler
88
263
  * @param handler Handler to register globally.
89
264
  */
90
265
  export declare const registerGlobalModunaLangChainHandler: (handler: ModunaLangChainCallbackHandler) => void;
266
+ //# sourceMappingURL=ModunaLangChainCallbackHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModunaLangChainCallbackHandler.d.ts","sourceRoot":"","sources":["../../services/ModunaLangChainCallbackHandler.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,9 @@ export class ModunaLangChainCallbackHandler extends BaseCallbackHandler {
11
11
  * Stable handler name used by LangChain callback manager de-duplication.
12
12
  */
13
13
  name = "moduna_otel_langchain_callback_handler";
14
+ debug;
14
15
  defaultTraceContext;
16
+ logger;
15
17
  runs = new Map();
16
18
  /**
17
19
  * Creates a LangChain callback handler for Moduna spans.
@@ -20,7 +22,9 @@ export class ModunaLangChainCallbackHandler extends BaseCallbackHandler {
20
22
  */
21
23
  constructor(config = {}) {
22
24
  super();
25
+ this.debug = config.debug ?? false;
23
26
  this.defaultTraceContext = config.traceContext ?? {};
27
+ this.logger = config.logger ?? console;
24
28
  }
25
29
  /**
26
30
  * Starts a span for a LangChain chat model run.
@@ -37,7 +41,8 @@ export class ModunaLangChainCallbackHandler extends BaseCallbackHandler {
37
41
  handleChatModelStart(llm, messages, runId, parentRunId, extraParams, tags, metadata, runName) {
38
42
  this.startRun({
39
43
  extraParams,
40
- inputCount: messages.length,
44
+ inputCount: messages.flat().length,
45
+ inputMessages: this.normalizeMessageBatches(messages),
41
46
  llm,
42
47
  metadata,
43
48
  parentRunId,
@@ -63,6 +68,10 @@ export class ModunaLangChainCallbackHandler extends BaseCallbackHandler {
63
68
  this.startRun({
64
69
  extraParams,
65
70
  inputCount: prompts.length,
71
+ inputMessages: prompts.map((prompt) => ({
72
+ content: prompt,
73
+ role: "user",
74
+ })),
66
75
  llm,
67
76
  metadata,
68
77
  parentRunId,
@@ -80,7 +89,21 @@ export class ModunaLangChainCallbackHandler extends BaseCallbackHandler {
80
89
  * @param runId LangChain run identifier.
81
90
  */
82
91
  handleLLMNewToken(_token, _idx, runId) {
83
- this.runs.get(runId)?.span.addEvent("langchain.llm.token");
92
+ const run = this.runs.get(runId);
93
+ if (!run) {
94
+ return;
95
+ }
96
+ run.streamedTokenCount += 1;
97
+ run.span.addEvent("gen_ai.content.completion", {
98
+ content: _token,
99
+ role: "assistant",
100
+ });
101
+ this.debugLog("token", run.span, {
102
+ runId,
103
+ runType: run.runType,
104
+ streamedTokenCount: run.streamedTokenCount,
105
+ tokenLength: _token.length,
106
+ });
84
107
  }
85
108
  /**
86
109
  * Ends the span for a successful LangChain run.
@@ -94,6 +117,17 @@ export class ModunaLangChainCallbackHandler extends BaseCallbackHandler {
94
117
  return;
95
118
  }
96
119
  run.span.setAttribute("langchain.output.generations", output.generations.length);
120
+ run.span.setAttribute("langchain.output.candidates", this.countGenerations(output));
121
+ this.applyCompletionAttributes(run.span, output);
122
+ this.applyUsageAttributes(run.span, output, run.streamedTokenCount);
123
+ this.debugLog("end", run.span, {
124
+ candidateCount: this.countGenerations(output),
125
+ generationCount: output.generations.length,
126
+ runId,
127
+ runType: run.runType,
128
+ streamedTokenCount: run.streamedTokenCount,
129
+ usage: this.extractUsage(output),
130
+ });
97
131
  run.span.setStatus({ code: SpanStatusCode.OK });
98
132
  run.span.end();
99
133
  this.runs.delete(runId);
@@ -109,10 +143,17 @@ export class ModunaLangChainCallbackHandler extends BaseCallbackHandler {
109
143
  if (!run) {
110
144
  return;
111
145
  }
112
- run.span.recordException(this.toError(error));
146
+ const normalizedError = this.toError(error);
147
+ run.span.recordException(normalizedError);
113
148
  run.span.setStatus({
114
149
  code: SpanStatusCode.ERROR,
115
- message: this.toError(error).message,
150
+ message: normalizedError.message,
151
+ });
152
+ this.debugLog("error", run.span, {
153
+ errorName: normalizedError.name,
154
+ errorMessage: normalizedError.message,
155
+ runId,
156
+ runType: run.runType,
116
157
  });
117
158
  run.span.end();
118
159
  this.runs.delete(runId);
@@ -127,25 +168,66 @@ export class ModunaLangChainCallbackHandler extends BaseCallbackHandler {
127
168
  span.setAttribute("langchain.run.id", input.runId);
128
169
  span.setAttribute("langchain.run.type", input.runType);
129
170
  span.setAttribute("langchain.input.count", input.inputCount);
171
+ span.setAttribute("langsmith.span.kind", "llm");
172
+ span.setAttribute("gen_ai.operation.name", input.runType === "chat_model" ? "chat" : "completion");
173
+ span.setAttribute("llm.request.type", input.runType === "chat_model" ? "chat" : "completion");
130
174
  if (input.parentRunId) {
131
175
  span.setAttribute("langchain.parent_run.id", input.parentRunId);
132
176
  }
177
+ if (input.runName) {
178
+ span.setAttribute("langsmith.trace.name", input.runName);
179
+ }
133
180
  if (input.tags?.length) {
134
181
  span.setAttribute("langchain.tags", input.tags.join(","));
182
+ span.setAttribute("langsmith.span.tags", input.tags.join(","));
135
183
  }
136
184
  this.applyModelAttributes(span, input.llm, input.extraParams);
185
+ this.applyPromptAttributes(span, input.inputMessages);
186
+ this.applyInvocationAttributes(span, input.extraParams);
137
187
  this.applyTraceContext(span, input.metadata);
138
- this.runs.set(input.runId, { span });
188
+ this.runs.set(input.runId, {
189
+ runType: input.runType,
190
+ span,
191
+ streamedTokenCount: 0,
192
+ });
193
+ this.debugLog("start", span, {
194
+ inputCount: input.inputCount,
195
+ parentRunId: input.parentRunId,
196
+ runId: input.runId,
197
+ runName: input.runName,
198
+ runType: input.runType,
199
+ tags: input.tags,
200
+ });
139
201
  }
202
+ /**
203
+ * Applies model/provider attributes using LangChain serialization metadata.
204
+ *
205
+ * @param span Span receiving model attributes.
206
+ * @param llm Serialized LangChain model metadata.
207
+ * @param extraParams Provider-specific invocation parameters.
208
+ */
140
209
  applyModelAttributes(span, llm, extraParams) {
141
- const modelName = this.getString(extraParams?.invocation_params, "model") ??
142
- this.getString(extraParams?.invocation_params, "modelName") ??
210
+ const invocationParams = this.getRecord(extraParams, "invocation_params");
211
+ const modelName = this.getString(invocationParams, "model") ??
212
+ this.getString(invocationParams, "modelName") ??
213
+ this.getString(invocationParams, "model_name") ??
143
214
  this.getString(llm, "name") ??
144
215
  llm.id.join(".");
145
- span.setAttribute("gen_ai.system", "google");
216
+ const provider = this.getString(invocationParams, "model_provider") ??
217
+ this.getString(invocationParams, "provider") ??
218
+ this.inferProvider(llm, modelName);
219
+ span.setAttribute("gen_ai.system", provider);
146
220
  span.setAttribute("gen_ai.request.model", modelName);
221
+ span.setAttribute("llm.model_name", modelName);
222
+ span.setAttribute("metadata.ls_model_name", modelName);
147
223
  span.setAttribute("langchain.serialized.id", llm.id.join("."));
148
224
  }
225
+ /**
226
+ * Applies Moduna conversation and session identifiers to a span.
227
+ *
228
+ * @param span Span receiving trace context attributes.
229
+ * @param metadata LangChain metadata supplied on the run.
230
+ */
149
231
  applyTraceContext(span, metadata) {
150
232
  const traceContext = {
151
233
  conversationId: this.getString(metadata, "conversationId") ??
@@ -157,11 +239,378 @@ export class ModunaLangChainCallbackHandler extends BaseCallbackHandler {
157
239
  };
158
240
  if (traceContext.conversationId) {
159
241
  span.setAttribute("moduna.conversation.id", traceContext.conversationId);
242
+ span.setAttribute("langsmith.metadata.conversation_id", traceContext.conversationId);
160
243
  }
161
244
  if (traceContext.sessionId) {
162
245
  span.setAttribute("moduna.session.id", traceContext.sessionId);
246
+ span.setAttribute("langsmith.metadata.session_id", traceContext.sessionId);
247
+ span.setAttribute("langsmith.trace.session_id", traceContext.sessionId);
248
+ }
249
+ }
250
+ /**
251
+ * Applies prompt input attributes in LangSmith-compatible GenAI format.
252
+ *
253
+ * @param span Span receiving prompt attributes.
254
+ * @param messages Normalized prompt messages.
255
+ */
256
+ applyPromptAttributes(span, messages) {
257
+ if (messages.length === 0) {
258
+ return;
259
+ }
260
+ for (const [index, message] of messages.entries()) {
261
+ span.setAttribute(`gen_ai.prompt.${index}.role`, message.role);
262
+ span.setAttribute(`gen_ai.prompt.${index}.content`, message.content);
263
+ }
264
+ span.setAttribute("gen_ai.input.messages", JSON.stringify(messages));
265
+ span.addEvent("gen_ai.content.prompt", {
266
+ content: JSON.stringify(messages),
267
+ });
268
+ }
269
+ /**
270
+ * Applies request parameter attributes in GenAI semantic format.
271
+ *
272
+ * @param span Span receiving invocation parameter attributes.
273
+ * @param extraParams Provider-specific invocation parameters.
274
+ */
275
+ applyInvocationAttributes(span, extraParams) {
276
+ const invocationParams = this.getRecord(extraParams, "invocation_params");
277
+ if (!invocationParams) {
278
+ return;
163
279
  }
280
+ const mappings = [
281
+ ["temperature", "gen_ai.request.temperature"],
282
+ ["top_p", "gen_ai.request.top_p"],
283
+ ["max_tokens", "gen_ai.request.max_tokens"],
284
+ ["maxOutputTokens", "gen_ai.request.max_tokens"],
285
+ ["frequency_penalty", "gen_ai.request.frequency_penalty"],
286
+ ["presence_penalty", "gen_ai.request.presence_penalty"],
287
+ ["seed", "gen_ai.request.seed"],
288
+ ["stop", "gen_ai.request.stop_sequences"],
289
+ ["stop_sequences", "gen_ai.request.stop_sequences"],
290
+ ["top_k", "gen_ai.request.top_k"],
291
+ ["encoding_formats", "gen_ai.request.encoding_formats"],
292
+ ["tools", "tools"],
293
+ ];
294
+ for (const [sourceKey, attributeKey] of mappings) {
295
+ this.setAttributeIfSupported(span, attributeKey, invocationParams[sourceKey]);
296
+ }
297
+ span.setAttribute("llm.invocation_parameters", JSON.stringify(invocationParams));
164
298
  }
299
+ /**
300
+ * Applies model completion output attributes from a LangChain result.
301
+ *
302
+ * @param span Span receiving completion attributes.
303
+ * @param output LangChain LLM output.
304
+ */
305
+ applyCompletionAttributes(span, output) {
306
+ const messages = [];
307
+ for (const generationGroup of output.generations) {
308
+ for (const generation of generationGroup) {
309
+ const message = this.getGenerationMessage(generation);
310
+ messages.push(message ?? {
311
+ content: generation.text,
312
+ role: "assistant",
313
+ });
314
+ }
315
+ }
316
+ for (const [index, message] of messages.entries()) {
317
+ span.setAttribute(`gen_ai.completion.${index}.role`, message.role);
318
+ span.setAttribute(`gen_ai.completion.${index}.content`, message.content);
319
+ }
320
+ if (messages.length > 0) {
321
+ span.setAttribute("gen_ai.output.messages", JSON.stringify(messages));
322
+ span.addEvent("gen_ai.content.completion", {
323
+ content: JSON.stringify(messages),
324
+ });
325
+ }
326
+ const responseModel = this.getResponseModel(output);
327
+ if (responseModel) {
328
+ span.setAttribute("gen_ai.response.model", responseModel);
329
+ }
330
+ }
331
+ /**
332
+ * Applies token usage attributes from a LangChain result.
333
+ *
334
+ * @param span Span receiving usage attributes.
335
+ * @param output LangChain LLM output.
336
+ * @param streamedTokenCount Token count observed from streaming callbacks.
337
+ */
338
+ applyUsageAttributes(span, output, streamedTokenCount) {
339
+ const usage = this.extractUsage(output);
340
+ if (usage.promptTokens !== undefined) {
341
+ span.setAttribute("gen_ai.usage.input_tokens", usage.promptTokens);
342
+ span.setAttribute("gen_ai.usage.prompt_tokens", usage.promptTokens);
343
+ span.setAttribute("llm.token_count.prompt", usage.promptTokens);
344
+ }
345
+ const completionTokens = usage.completionTokens ??
346
+ (streamedTokenCount > 0 ? streamedTokenCount : undefined);
347
+ if (completionTokens !== undefined) {
348
+ span.setAttribute("gen_ai.usage.output_tokens", completionTokens);
349
+ span.setAttribute("gen_ai.usage.completion_tokens", completionTokens);
350
+ span.setAttribute("llm.token_count.completion", completionTokens);
351
+ }
352
+ if (usage.totalTokens !== undefined) {
353
+ span.setAttribute("gen_ai.usage.total_tokens", usage.totalTokens);
354
+ span.setAttribute("llm.token_count.total", usage.totalTokens);
355
+ span.setAttribute("llm.usage.total_tokens", usage.totalTokens);
356
+ }
357
+ if (usage.reasoningTokens !== undefined) {
358
+ span.setAttribute("gen_ai.usage.details.reasoning_tokens", usage.reasoningTokens);
359
+ }
360
+ }
361
+ /**
362
+ * Extracts token usage from LangChain result metadata and provider outputs.
363
+ *
364
+ * @param output LangChain LLM output.
365
+ * @returns Normalized token usage when present.
366
+ */
367
+ extractUsage(output) {
368
+ const usageMetadata = this.getFirstUsageMetadata(output);
369
+ const tokenUsage = this.getRecord(output.llmOutput, "tokenUsage");
370
+ const estimatedTokenUsage = this.getRecord(output.llmOutput, "estimatedTokenUsage");
371
+ return {
372
+ completionTokens: this.getNumber(usageMetadata, "output_tokens") ??
373
+ this.getNumber(tokenUsage, "completionTokens") ??
374
+ this.getNumber(tokenUsage, "completion_tokens") ??
375
+ this.getNumber(estimatedTokenUsage, "completionTokens"),
376
+ promptTokens: this.getNumber(usageMetadata, "input_tokens") ??
377
+ this.getNumber(tokenUsage, "promptTokens") ??
378
+ this.getNumber(tokenUsage, "prompt_tokens") ??
379
+ this.getNumber(estimatedTokenUsage, "promptTokens"),
380
+ reasoningTokens: this.getNumber(this.getRecord(usageMetadata, "output_token_details"), "reasoning"),
381
+ totalTokens: this.getNumber(usageMetadata, "total_tokens") ??
382
+ this.getNumber(tokenUsage, "totalTokens") ??
383
+ this.getNumber(tokenUsage, "total_tokens") ??
384
+ this.getNumber(estimatedTokenUsage, "totalTokens"),
385
+ };
386
+ }
387
+ /**
388
+ * Finds the first message usage metadata in a LangChain result.
389
+ *
390
+ * @param output LangChain LLM output.
391
+ * @returns Usage metadata record when present.
392
+ */
393
+ getFirstUsageMetadata(output) {
394
+ for (const generationGroup of output.generations) {
395
+ for (const generation of generationGroup) {
396
+ const message = this.getMessageLike(generation);
397
+ const usageMetadata = this.getRecord(message, "usage_metadata");
398
+ if (usageMetadata) {
399
+ return usageMetadata;
400
+ }
401
+ }
402
+ }
403
+ return undefined;
404
+ }
405
+ /**
406
+ * Finds the model name returned by the provider, when available.
407
+ *
408
+ * @param output LangChain LLM output.
409
+ * @returns Provider response model name when present.
410
+ */
411
+ getResponseModel(output) {
412
+ for (const generationGroup of output.generations) {
413
+ for (const generation of generationGroup) {
414
+ const message = this.getMessageLike(generation);
415
+ const responseMetadata = this.getRecord(message, "response_metadata");
416
+ const model = this.getString(responseMetadata, "model_name") ??
417
+ this.getString(responseMetadata, "model") ??
418
+ this.getString(output.llmOutput, "model");
419
+ if (model) {
420
+ return model;
421
+ }
422
+ }
423
+ }
424
+ return this.getString(output.llmOutput, "model");
425
+ }
426
+ /**
427
+ * Counts all generated candidates in a LangChain result.
428
+ *
429
+ * @param output LangChain LLM output.
430
+ * @returns Total generation candidate count.
431
+ */
432
+ countGenerations(output) {
433
+ return output.generations.reduce((count, generationGroup) => count + generationGroup.length, 0);
434
+ }
435
+ /**
436
+ * Converts batches of LangChain messages to flat normalized messages.
437
+ *
438
+ * @param messageBatches LangChain message batches.
439
+ * @returns Flat list of normalized prompt messages.
440
+ */
441
+ normalizeMessageBatches(messageBatches) {
442
+ return messageBatches.flatMap((messages) => messages.map((message) => this.normalizeMessage(message)));
443
+ }
444
+ /**
445
+ * Converts a LangChain message to a GenAI-compatible role/content pair.
446
+ *
447
+ * @param message LangChain base message.
448
+ * @returns Normalized message.
449
+ */
450
+ normalizeMessage(message) {
451
+ return {
452
+ content: typeof message.content === "string"
453
+ ? message.content
454
+ : JSON.stringify(message.content),
455
+ role: this.mapMessageRole(message.type),
456
+ };
457
+ }
458
+ /**
459
+ * Converts LangChain message types to GenAI/OpenAI role names.
460
+ *
461
+ * @param type LangChain message type.
462
+ * @returns Role name for telemetry.
463
+ */
464
+ mapMessageRole(type) {
465
+ const roleMap = {
466
+ ai: "assistant",
467
+ human: "user",
468
+ system: "system",
469
+ tool: "tool",
470
+ };
471
+ return roleMap[type] ?? type;
472
+ }
473
+ /**
474
+ * Extracts a normalized chat generation message when one exists.
475
+ *
476
+ * @param generation LangChain generation candidate.
477
+ * @returns Normalized generation message when present.
478
+ */
479
+ getGenerationMessage(generation) {
480
+ const message = this.getMessageLike(generation);
481
+ if (!message) {
482
+ return undefined;
483
+ }
484
+ const content = message.content;
485
+ const type = this.getString(message, "type");
486
+ if (typeof content !== "string" && !Array.isArray(content)) {
487
+ return undefined;
488
+ }
489
+ return {
490
+ content: typeof content === "string" ? content : JSON.stringify(content),
491
+ role: this.mapMessageRole(type ?? "assistant"),
492
+ };
493
+ }
494
+ /**
495
+ * Extracts a message-shaped value from a LangChain generation.
496
+ *
497
+ * @param generation LangChain generation candidate.
498
+ * @returns Message-shaped record when present.
499
+ */
500
+ getMessageLike(generation) {
501
+ return this.getRecord(generation, "message");
502
+ }
503
+ /**
504
+ * Infers a provider name from serialized model metadata.
505
+ *
506
+ * @param llm Serialized LangChain model metadata.
507
+ * @param modelName Model name used for the request.
508
+ * @returns Provider name for GenAI attributes.
509
+ */
510
+ inferProvider(llm, modelName) {
511
+ const serializedId = llm.id.join(".").toLowerCase();
512
+ const model = modelName.toLowerCase();
513
+ if (serializedId.includes("google") || model.includes("gemini")) {
514
+ return "google";
515
+ }
516
+ if (serializedId.includes("openai") || model.includes("gpt")) {
517
+ return "openai";
518
+ }
519
+ if (serializedId.includes("anthropic") || model.includes("claude")) {
520
+ return "anthropic";
521
+ }
522
+ return llm.id.at(-1) ?? "unknown";
523
+ }
524
+ /**
525
+ * Sets a span attribute when the value is OpenTelemetry-compatible.
526
+ *
527
+ * @param span Span receiving the attribute.
528
+ * @param key Attribute key.
529
+ * @param value Attribute value.
530
+ */
531
+ setAttributeIfSupported(span, key, value) {
532
+ const attributeValue = this.toAttributeValue(value);
533
+ if (attributeValue !== undefined) {
534
+ span.setAttribute(key, attributeValue);
535
+ }
536
+ }
537
+ /**
538
+ * Emits a debug trace lifecycle log when debug mode is enabled.
539
+ *
540
+ * @param event Trace lifecycle event name.
541
+ * @param span Span associated with the lifecycle event.
542
+ * @param payload Additional event fields.
543
+ */
544
+ debugLog(event, span, payload) {
545
+ if (!this.debug) {
546
+ return;
547
+ }
548
+ const spanContext = span.spanContext();
549
+ const logPayload = {
550
+ event,
551
+ spanId: spanContext.spanId,
552
+ traceId: spanContext.traceId,
553
+ ...payload,
554
+ };
555
+ if (event === "error") {
556
+ this.logger.error("[moduna:langchain]", logPayload);
557
+ return;
558
+ }
559
+ this.logger.debug("[moduna:langchain]", logPayload);
560
+ }
561
+ /**
562
+ * Converts arbitrary values to supported OpenTelemetry attribute values.
563
+ *
564
+ * @param value Unknown source value.
565
+ * @returns OpenTelemetry attribute value when representable.
566
+ */
567
+ toAttributeValue(value) {
568
+ if (typeof value === "string" ||
569
+ typeof value === "number" ||
570
+ typeof value === "boolean") {
571
+ return value;
572
+ }
573
+ if (Array.isArray(value)) {
574
+ if (value.every((item) => typeof item === "string")) {
575
+ return value;
576
+ }
577
+ if (value.every((item) => typeof item === "number")) {
578
+ return value;
579
+ }
580
+ if (value.every((item) => typeof item === "boolean")) {
581
+ return value;
582
+ }
583
+ return JSON.stringify(value);
584
+ }
585
+ if (value && typeof value === "object") {
586
+ return JSON.stringify(value);
587
+ }
588
+ return undefined;
589
+ }
590
+ /**
591
+ * Reads an object-valued property from a record-like value.
592
+ *
593
+ * @param value Record-like source value.
594
+ * @param key Property key.
595
+ * @returns Nested record when present.
596
+ */
597
+ getRecord(value, key) {
598
+ if (!value || typeof value !== "object") {
599
+ return undefined;
600
+ }
601
+ const record = value;
602
+ const result = record[key];
603
+ return result && typeof result === "object" && !Array.isArray(result)
604
+ ? result
605
+ : undefined;
606
+ }
607
+ /**
608
+ * Reads a string-valued property from a record-like value.
609
+ *
610
+ * @param value Record-like source value.
611
+ * @param key Property key.
612
+ * @returns String property when present.
613
+ */
165
614
  getString(value, key) {
166
615
  if (!value || typeof value !== "object") {
167
616
  return undefined;
@@ -170,6 +619,27 @@ export class ModunaLangChainCallbackHandler extends BaseCallbackHandler {
170
619
  const result = record[key];
171
620
  return typeof result === "string" ? result : undefined;
172
621
  }
622
+ /**
623
+ * Reads a number-valued property from a record-like value.
624
+ *
625
+ * @param value Record-like source value.
626
+ * @param key Property key.
627
+ * @returns Number property when present.
628
+ */
629
+ getNumber(value, key) {
630
+ if (!value || typeof value !== "object") {
631
+ return undefined;
632
+ }
633
+ const record = value;
634
+ const result = record[key];
635
+ return typeof result === "number" ? result : undefined;
636
+ }
637
+ /**
638
+ * Normalizes unknown errors to Error instances.
639
+ *
640
+ * @param error Unknown error value.
641
+ * @returns Error instance.
642
+ */
173
643
  toError(error) {
174
644
  return error instanceof Error ? error : new Error(String(error));
175
645
  }
@@ -189,3 +659,4 @@ export const registerGlobalModunaLangChainHandler = (handler) => {
189
659
  }
190
660
  setContextVariable(MODUNA_LANGCHAIN_HANDLER_CONTEXT_KEY, handler);
191
661
  };
662
+ //# sourceMappingURL=ModunaLangChainCallbackHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModunaLangChainCallbackHandler.js","sourceRoot":"","sources":["../../services/ModunaLangChainCallbackHandler.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { AttributeValue } from "@opentelemetry/api";
2
2
  import type { ModunaOTELConfig } from "../interface/ModunaOTELConfig.js";
3
3
  import type { TraceCallback } from "../types/TraceCallback.js";
4
4
  import type { ModunaTelemetryMetadata, ModunaTraceContext } from "../types/TraceContext.js";
5
+ import type { ModunaLangChainCallbackHandlerConfig } from "./ModunaLangChainCallbackHandler.js";
5
6
  import { ModunaLangChainCallbackHandler } from "./ModunaLangChainCallbackHandler.js";
6
7
  /**
7
8
  * Vercel AI SDK compatible telemetry settings.
@@ -58,16 +59,18 @@ export declare class ModunaOTEL {
58
59
  * Creates a LangChain callback handler for per-call usage.
59
60
  *
60
61
  * @param context Default conversation or session identifiers.
62
+ * @param config Optional LangChain handler settings.
61
63
  * @returns LangChain callback handler that emits Moduna spans.
62
64
  */
63
- langChainHandler(context?: ModunaTraceContext): ModunaLangChainCallbackHandler;
65
+ langChainHandler(context?: ModunaTraceContext, config?: Omit<ModunaLangChainCallbackHandlerConfig, "traceContext">): ModunaLangChainCallbackHandler;
64
66
  /**
65
67
  * Registers a LangChain callback handler for all LangChain runs.
66
68
  *
67
69
  * @param context Default conversation or session identifiers.
70
+ * @param config Optional LangChain handler settings.
68
71
  * @returns The globally registered LangChain callback handler.
69
72
  */
70
- registerGlobalLangChainHandler(context?: ModunaTraceContext): ModunaLangChainCallbackHandler;
73
+ registerGlobalLangChainHandler(context?: ModunaTraceContext, config?: Omit<ModunaLangChainCallbackHandlerConfig, "traceContext">): ModunaLangChainCallbackHandler;
71
74
  /**
72
75
  * Instruments a callback with a Moduna span.
73
76
  *
@@ -95,3 +98,4 @@ export declare class ModunaOTEL {
95
98
  private warnOnce;
96
99
  }
97
100
  export default ModunaOTEL;
101
+ //# sourceMappingURL=ModunaOTEL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModunaOTEL.d.ts","sourceRoot":"","sources":["../../services/ModunaOTEL.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,KAAK,EACR,uBAAuB,EACvB,kBAAkB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAChG,OAAO,EACH,8BAA8B,EAEjC,MAAM,qCAAqC,CAAC;AA+D7C;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC1C;;OAEG;IACH,SAAS,EAAE,IAAI,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACtE;AA6DD;;GAEG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAI5B;IAEF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAEhD;;;;OAIG;gBACgB,MAAM,EAAE,gBAAgB;IAQ3C;;;;;OAKG;WACiB,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAMxE;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IASnC;;OAEG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAStC;;OAEG;YACW,cAAc;IAiB5B;;;;;OAKG;IACI,eAAe,CAClB,OAAO,GAAE,kBAAuB,GACjC,6BAA6B;IAOhC;;;;;;OAMG;IACI,gBAAgB,CACnB,OAAO,GAAE,kBAAuB,EAChC,MAAM,GAAE,IAAI,CAAC,oCAAoC,EAAE,cAAc,CAAM,GACxE,8BAA8B;IAOjC;;;;;;OAMG;IACI,8BAA8B,CACjC,OAAO,GAAE,kBAAuB,EAChC,MAAM,GAAE,IAAI,CAAC,oCAAoC,EAAE,cAAc,CAAM,GACxE,8BAA8B;IAMjC;;;;;;OAMG;IACI,UAAU,CAAC,CAAC,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,CAAC,CAAC;IAEb;;;;;;;OAOG;IACI,UAAU,CAAC,CAAC,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,CAAC,CAAC;IAoCb,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,SAAS;YAsBH,WAAW;IAezB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,QAAQ;CAQnB;AAED,eAAe,UAAU,CAAC"}
@@ -133,10 +133,12 @@ export class ModunaOTEL {
133
133
  * Creates a LangChain callback handler for per-call usage.
134
134
  *
135
135
  * @param context Default conversation or session identifiers.
136
+ * @param config Optional LangChain handler settings.
136
137
  * @returns LangChain callback handler that emits Moduna spans.
137
138
  */
138
- langChainHandler(context = {}) {
139
+ langChainHandler(context = {}, config = {}) {
139
140
  return new ModunaLangChainCallbackHandler({
141
+ ...config,
140
142
  traceContext: context,
141
143
  });
142
144
  }
@@ -144,10 +146,11 @@ export class ModunaOTEL {
144
146
  * Registers a LangChain callback handler for all LangChain runs.
145
147
  *
146
148
  * @param context Default conversation or session identifiers.
149
+ * @param config Optional LangChain handler settings.
147
150
  * @returns The globally registered LangChain callback handler.
148
151
  */
149
- registerGlobalLangChainHandler(context = {}) {
150
- const handler = this.langChainHandler(context);
152
+ registerGlobalLangChainHandler(context = {}, config = {}) {
153
+ const handler = this.langChainHandler(context, config);
151
154
  registerGlobalModunaLangChainHandler(handler);
152
155
  return handler;
153
156
  }
@@ -273,3 +276,4 @@ export class ModunaOTEL {
273
276
  }
274
277
  }
275
278
  export default ModunaOTEL;
279
+ //# sourceMappingURL=ModunaOTEL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModunaOTEL.js","sourceRoot":"","sources":["../../services/ModunaOTEL.ts"],"names":[],"mappings":"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"}
@@ -6,3 +6,4 @@ export type { ModunaOTELConfig } from "../interface/ModunaOTELConfig.js";
6
6
  export type { ModunaOTELFramework, ModunaOTELSDKIntegration, } from "../types/SupportedSDK.js";
7
7
  export type { TraceCallback } from "../types/TraceCallback.js";
8
8
  export type { ModunaTelemetryMetadata, ModunaTelemetryMetadataKey, ModunaTraceContext, } from "../types/TraceContext.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACH,8BAA8B,EAC9B,oCAAoC,GACvC,MAAM,+CAA+C,CAAC;AACvD,YAAY,EAAE,oCAAoC,EAAE,MAAM,+CAA+C,CAAC;AAC1G,YAAY,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,YAAY,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,YAAY,EACR,mBAAmB,EACnB,wBAAwB,GAC3B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,YAAY,EACR,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,GACrB,MAAM,0BAA0B,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export { default, ModunaOTEL } from "../services/ModunaOTEL.js";
2
2
  export { ModunaLangChainCallbackHandler, registerGlobalModunaLangChainHandler, } from "../services/ModunaLangChainCallbackHandler.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACH,8BAA8B,EAC9B,oCAAoC,GACvC,MAAM,+CAA+C,CAAC"}
@@ -6,3 +6,4 @@ export type ModunaOTELFramework = "langchain" | "vercel-ai-sdk";
6
6
  * Deprecated alias kept for existing consumers that still pass sdkIntegration.
7
7
  */
8
8
  export type ModunaOTELSDKIntegration = ModunaOTELFramework;
9
+ //# sourceMappingURL=SupportedSDK.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupportedSDK.d.ts","sourceRoot":"","sources":["../../types/SupportedSDK.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,eAAe,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,CAAC"}
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=SupportedSDK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupportedSDK.js","sourceRoot":"","sources":["../../types/SupportedSDK.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  import type { Span } from "@opentelemetry/api";
2
2
  export type TraceCallback<T> = (span: Span) => Promise<T> | T;
3
+ //# sourceMappingURL=TraceCallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceCallback.d.ts","sourceRoot":"","sources":["../../types/TraceCallback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC"}
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=TraceCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceCallback.js","sourceRoot":"","sources":["../../types/TraceCallback.ts"],"names":[],"mappings":""}
@@ -19,3 +19,4 @@ export type ModunaTelemetryMetadataKey = "moduna.conversation.id" | "moduna.sess
19
19
  * Vercel AI SDK metadata generated from Moduna trace context.
20
20
  */
21
21
  export type ModunaTelemetryMetadata = Partial<Record<ModunaTelemetryMetadataKey, string>>;
22
+ //# sourceMappingURL=TraceContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceContext.d.ts","sourceRoot":"","sources":["../../types/TraceContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAChC,wBAAwB,GACxB,mBAAmB,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,CACzC,MAAM,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAC7C,CAAC"}
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=TraceContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceContext.js","sourceRoot":"","sources":["../../types/TraceContext.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moduna/otel",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "private": false,
5
5
  "description": "One-line OpenTelemetry setup for Moduna AI traces.",
6
6
  "license": "MIT",
@@ -30,7 +30,7 @@
30
30
  "access": "public"
31
31
  },
32
32
  "dependencies": {
33
- "@langchain/core": "^1.1.46",
33
+ "@langchain/core": "^1.1.47",
34
34
  "@opentelemetry/api": "^1.9.1",
35
35
  "@opentelemetry/exporter-trace-otlp-http": "^0.218.0",
36
36
  "@opentelemetry/resources": "^2.7.1",
@@ -62,13 +62,13 @@
62
62
  }
63
63
  },
64
64
  "devDependencies": {
65
- "@ai-sdk/google": "^3.0.75",
65
+ "@ai-sdk/google": "^3.0.78",
66
66
  "@changesets/cli": "^2.31.0",
67
- "@langchain/google-genai": "^2.1.30",
68
- "@types/node": "^25.8.0",
69
- "ai": "^6.0.184",
67
+ "@langchain/google-genai": "^2.1.31",
68
+ "@types/node": "^25.9.1",
69
+ "ai": "^6.0.188",
70
70
  "biome": "^0.3.3",
71
- "tsx": "^4.12.0",
71
+ "tsx": "^4.22.3",
72
72
  "typescript": "^6.0.3"
73
73
  },
74
74
  "scripts": {