openlit 1.8.0 → 1.9.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.
Files changed (39) hide show
  1. package/dist/instrumentation/bedrock/index.d.ts +11 -0
  2. package/dist/instrumentation/bedrock/index.js +52 -0
  3. package/dist/instrumentation/bedrock/index.js.map +1 -0
  4. package/dist/instrumentation/bedrock/wrapper.d.ts +10 -0
  5. package/dist/instrumentation/bedrock/wrapper.js +345 -0
  6. package/dist/instrumentation/bedrock/wrapper.js.map +1 -0
  7. package/dist/instrumentation/index.js +10 -0
  8. package/dist/instrumentation/index.js.map +1 -1
  9. package/dist/instrumentation/langchain/index.d.ts +23 -0
  10. package/dist/instrumentation/langchain/index.js +109 -0
  11. package/dist/instrumentation/langchain/index.js.map +1 -0
  12. package/dist/instrumentation/langchain/wrapper.d.ts +6 -0
  13. package/dist/instrumentation/langchain/wrapper.js +318 -0
  14. package/dist/instrumentation/langchain/wrapper.js.map +1 -0
  15. package/dist/instrumentation/llamaindex/index.d.ts +11 -0
  16. package/dist/instrumentation/llamaindex/index.js +102 -0
  17. package/dist/instrumentation/llamaindex/index.js.map +1 -0
  18. package/dist/instrumentation/llamaindex/wrapper.d.ts +11 -0
  19. package/dist/instrumentation/llamaindex/wrapper.js +252 -0
  20. package/dist/instrumentation/llamaindex/wrapper.js.map +1 -0
  21. package/dist/instrumentation/openai/index.js +1 -1
  22. package/dist/instrumentation/openai/index.js.map +1 -1
  23. package/dist/instrumentation/pinecone/index.d.ts +11 -0
  24. package/dist/instrumentation/pinecone/index.js +79 -0
  25. package/dist/instrumentation/pinecone/index.js.map +1 -0
  26. package/dist/instrumentation/pinecone/wrapper.d.ts +14 -0
  27. package/dist/instrumentation/pinecone/wrapper.js +198 -0
  28. package/dist/instrumentation/pinecone/wrapper.js.map +1 -0
  29. package/dist/instrumentation/vercel-ai/index.d.ts +10 -0
  30. package/dist/instrumentation/vercel-ai/index.js +59 -0
  31. package/dist/instrumentation/vercel-ai/index.js.map +1 -0
  32. package/dist/instrumentation/vercel-ai/wrapper.d.ts +11 -0
  33. package/dist/instrumentation/vercel-ai/wrapper.js +248 -0
  34. package/dist/instrumentation/vercel-ai/wrapper.js.map +1 -0
  35. package/dist/semantic-convention.d.ts +10 -0
  36. package/dist/semantic-convention.js +15 -5
  37. package/dist/semantic-convention.js.map +1 -1
  38. package/dist/types.d.ts +1 -1
  39. package/package.json +1 -1
@@ -0,0 +1,11 @@
1
+ import { InstrumentationBase, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';
2
+ import { InstrumentationConfig } from '@opentelemetry/instrumentation';
3
+ export interface BedrockInstrumentationConfig extends InstrumentationConfig {
4
+ }
5
+ export default class OpenlitBedrockInstrumentation extends InstrumentationBase {
6
+ constructor(config?: BedrockInstrumentationConfig);
7
+ protected init(): void | InstrumentationModuleDefinition | InstrumentationModuleDefinition[];
8
+ manualPatch(bedrock: any): void;
9
+ protected _patch(moduleExports: any): void;
10
+ protected _unpatch(moduleExports: any): void;
11
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const instrumentation_1 = require("@opentelemetry/instrumentation");
7
+ const constant_1 = require("../../constant");
8
+ const wrapper_1 = __importDefault(require("./wrapper"));
9
+ class OpenlitBedrockInstrumentation extends instrumentation_1.InstrumentationBase {
10
+ constructor(config = {}) {
11
+ super(`${constant_1.INSTRUMENTATION_PREFIX}/instrumentation-bedrock`, '1.0.0', config);
12
+ }
13
+ init() {
14
+ const module = new instrumentation_1.InstrumentationNodeModuleDefinition('@aws-sdk/client-bedrock-runtime', ['>=3.0.0'], (moduleExports) => {
15
+ this._patch(moduleExports);
16
+ return moduleExports;
17
+ }, (moduleExports) => {
18
+ if (moduleExports !== undefined) {
19
+ this._unpatch(moduleExports);
20
+ }
21
+ });
22
+ return [module];
23
+ }
24
+ manualPatch(bedrock) {
25
+ this._patch(bedrock);
26
+ }
27
+ _patch(moduleExports) {
28
+ try {
29
+ const BedrockRuntimeClient = moduleExports.BedrockRuntimeClient;
30
+ if (!BedrockRuntimeClient?.prototype)
31
+ return;
32
+ if ((0, instrumentation_1.isWrapped)(BedrockRuntimeClient.prototype.send)) {
33
+ this._unwrap(BedrockRuntimeClient.prototype, 'send');
34
+ }
35
+ this._wrap(BedrockRuntimeClient.prototype, 'send', wrapper_1.default._patchSend(this.tracer));
36
+ }
37
+ catch (e) {
38
+ console.error('Error in Bedrock _patch method:', e);
39
+ }
40
+ }
41
+ _unpatch(moduleExports) {
42
+ try {
43
+ const BedrockRuntimeClient = moduleExports.BedrockRuntimeClient;
44
+ if (BedrockRuntimeClient?.prototype?.send) {
45
+ this._unwrap(BedrockRuntimeClient.prototype, 'send');
46
+ }
47
+ }
48
+ catch { /* ignore */ }
49
+ }
50
+ }
51
+ exports.default = OpenlitBedrockInstrumentation;
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/instrumentation/bedrock/index.ts"],"names":[],"mappings":";;;;;AAAA,oEAKwC;AAExC,6CAAwD;AACxD,wDAAuC;AAIvC,MAAqB,6BAA8B,SAAQ,qCAAmB;IAC5E,YAAY,SAAuC,EAAE;QACnD,KAAK,CAAC,GAAG,iCAAsB,0BAA0B,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;IAES,IAAI;QACZ,MAAM,MAAM,GAAG,IAAI,qDAAmC,CACpD,iCAAiC,EACjC,CAAC,SAAS,CAAC,EACX,CAAC,aAAa,EAAE,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO,aAAa,CAAC;QACvB,CAAC,EACD,CAAC,aAAa,EAAE,EAAE;YAChB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CACF,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAEM,WAAW,CAAC,OAAY;QAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAES,MAAM,CAAC,aAAkB;QACjC,IAAI,CAAC;YACH,MAAM,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC;YAChE,IAAI,CAAC,oBAAoB,EAAE,SAAS;gBAAE,OAAO;YAE7C,IAAI,IAAA,2BAAS,EAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,CAAC,KAAK,CACR,oBAAoB,CAAC,SAAS,EAC9B,MAAM,EACN,iBAAc,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CACvC,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAES,QAAQ,CAAC,aAAkB;QACnC,IAAI,CAAC;YACH,MAAM,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC;YAChE,IAAI,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;CACF;AArDD,gDAqDC"}
@@ -0,0 +1,10 @@
1
+ import { Tracer } from '@opentelemetry/api';
2
+ import BaseWrapper from '../base-wrapper';
3
+ declare class BedrockWrapper extends BaseWrapper {
4
+ static aiSystem: string;
5
+ static _patchSend(tracer: Tracer): any;
6
+ static _handleConverseCommand(tracer: Tracer, originalMethod: any, instance: any, args: any[]): Promise<any>;
7
+ static _handleConverseStreamCommand(tracer: Tracer, originalMethod: any, instance: any, args: any[]): Promise<any>;
8
+ static _handleInvokeModelCommand(tracer: Tracer, originalMethod: any, instance: any, args: any[], commandName: string): Promise<any>;
9
+ }
10
+ export default BedrockWrapper;
@@ -0,0 +1,345 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const api_1 = require("@opentelemetry/api");
7
+ const config_1 = __importDefault(require("../../config"));
8
+ const helpers_1 = __importDefault(require("../../helpers"));
9
+ const semantic_convention_1 = __importDefault(require("../../semantic-convention"));
10
+ const base_wrapper_1 = __importDefault(require("../base-wrapper"));
11
+ const BEDROCK_SERVER_ADDRESS = 'bedrock-runtime.amazonaws.com';
12
+ const BEDROCK_SERVER_PORT = 443;
13
+ function mapFinishReason(stopReason) {
14
+ const map = {
15
+ end_turn: 'stop',
16
+ max_tokens: 'max_tokens',
17
+ stop_sequence: 'stop',
18
+ tool_use: 'tool_calls',
19
+ content_filtered: 'content_filter',
20
+ guardrail_intervention: 'content_filter',
21
+ };
22
+ return map[stopReason] || stopReason;
23
+ }
24
+ function applyInferenceConfigAttributes(span, inferenceConfig) {
25
+ if (inferenceConfig.maxTokens !== undefined)
26
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_MAX_TOKENS, inferenceConfig.maxTokens);
27
+ if (inferenceConfig.temperature !== undefined)
28
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_TEMPERATURE, inferenceConfig.temperature);
29
+ if (inferenceConfig.topP !== undefined)
30
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_TOP_P, inferenceConfig.topP);
31
+ if (inferenceConfig.topK !== undefined)
32
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_TOP_K, inferenceConfig.topK);
33
+ if (inferenceConfig.stopSequences !== undefined)
34
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_STOP_SEQUENCES, inferenceConfig.stopSequences);
35
+ }
36
+ class BedrockWrapper extends base_wrapper_1.default {
37
+ static _patchSend(tracer) {
38
+ return (originalMethod) => {
39
+ return async function (...args) {
40
+ const command = args[0];
41
+ if (!command)
42
+ return originalMethod.apply(this, args);
43
+ const commandName = command.constructor?.name || '';
44
+ if (commandName === 'ConverseCommand') {
45
+ return BedrockWrapper._handleConverseCommand(tracer, originalMethod, this, args);
46
+ }
47
+ if (commandName === 'ConverseStreamCommand') {
48
+ return BedrockWrapper._handleConverseStreamCommand(tracer, originalMethod, this, args);
49
+ }
50
+ if (commandName === 'InvokeModelCommand' || commandName === 'InvokeModelWithResponseStreamCommand') {
51
+ return BedrockWrapper._handleInvokeModelCommand(tracer, originalMethod, this, args, commandName);
52
+ }
53
+ return originalMethod.apply(this, args);
54
+ };
55
+ };
56
+ }
57
+ static async _handleConverseCommand(tracer, originalMethod, instance, args) {
58
+ const command = args[0];
59
+ const input = command.input || {};
60
+ const modelId = input.modelId || 'unknown';
61
+ const genAIEndpoint = 'bedrock.converse';
62
+ const span = tracer.startSpan(genAIEndpoint, { kind: api_1.SpanKind.CLIENT });
63
+ return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), async () => {
64
+ const startTime = Date.now();
65
+ let metricParams;
66
+ try {
67
+ const response = await originalMethod.apply(instance, args);
68
+ const duration = (Date.now() - startTime) / 1000;
69
+ const usage = response.usage || {};
70
+ const promptTokens = usage.inputTokens || 0;
71
+ const completionTokens = usage.outputTokens || 0;
72
+ const totalTokens = usage.totalTokens || promptTokens + completionTokens;
73
+ const cacheReadTokens = usage.cacheReadInputTokens || 0;
74
+ const cacheWriteTokens = usage.cacheWriteInputTokens || 0;
75
+ const finishReason = mapFinishReason(response.stopReason || 'stop');
76
+ const pricingInfo = await config_1.default.updatePricingJson(config_1.default.pricing_json);
77
+ const cost = helpers_1.default.getChatModelCost(modelId, pricingInfo, promptTokens, completionTokens);
78
+ BedrockWrapper.setBaseSpanAttributes(span, {
79
+ genAIEndpoint,
80
+ model: modelId,
81
+ cost,
82
+ aiSystem: BedrockWrapper.aiSystem,
83
+ });
84
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT);
85
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_IS_STREAM, false);
86
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_MODEL, modelId);
87
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS, promptTokens);
88
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS, completionTokens);
89
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_TOTAL_TOKENS, totalTokens);
90
+ span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_TOKEN_USAGE, totalTokens);
91
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON, [finishReason]);
92
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_TYPE, semantic_convention_1.default.GEN_AI_OUTPUT_TYPE_TEXT);
93
+ span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_OPERATION_DURATION, duration);
94
+ span.setAttribute(semantic_convention_1.default.SERVER_ADDRESS, BEDROCK_SERVER_ADDRESS);
95
+ span.setAttribute(semantic_convention_1.default.SERVER_PORT, BEDROCK_SERVER_PORT);
96
+ if (cacheReadTokens > 0)
97
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_PROMPT_TOKENS_DETAILS_CACHE_READ, cacheReadTokens);
98
+ if (cacheWriteTokens > 0)
99
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_PROMPT_TOKENS_DETAILS_CACHE_WRITE, cacheWriteTokens);
100
+ const requestId = response.$metadata?.requestId;
101
+ if (requestId)
102
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_ID, requestId);
103
+ applyInferenceConfigAttributes(span, input.inferenceConfig || {});
104
+ if (config_1.default.traceContent) {
105
+ const messages = (input.messages || []).map((m) => ({
106
+ role: m.role,
107
+ content: m.content?.map((c) => c.text || '').join('') || '',
108
+ }));
109
+ const systemText = input.system?.[0]?.text;
110
+ span.setAttribute(semantic_convention_1.default.GEN_AI_INPUT_MESSAGES, helpers_1.default.buildInputMessages(messages, systemText));
111
+ if (systemText) {
112
+ span.setAttribute(semantic_convention_1.default.GEN_AI_SYSTEM_INSTRUCTIONS, JSON.stringify([{ type: 'text', content: systemText }]));
113
+ }
114
+ const outputText = response.output?.message?.content?.map((c) => c.text || '').join('') || '';
115
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES, helpers_1.default.buildOutputMessages(outputText, finishReason));
116
+ }
117
+ metricParams = { genAIEndpoint, model: modelId, cost, aiSystem: BedrockWrapper.aiSystem };
118
+ return response;
119
+ }
120
+ catch (e) {
121
+ helpers_1.default.handleException(span, e);
122
+ throw e;
123
+ }
124
+ finally {
125
+ span.end();
126
+ if (metricParams)
127
+ base_wrapper_1.default.recordMetrics(span, metricParams);
128
+ }
129
+ });
130
+ }
131
+ static async _handleConverseStreamCommand(tracer, originalMethod, instance, args) {
132
+ const command = args[0];
133
+ const input = command.input || {};
134
+ const modelId = input.modelId || 'unknown';
135
+ const genAIEndpoint = 'bedrock.converse_stream';
136
+ const startTime = Date.now();
137
+ const span = tracer.startSpan(genAIEndpoint, { kind: api_1.SpanKind.CLIENT });
138
+ // Call the original method to get the response object (with .stream async iterable)
139
+ const response = await api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => originalMethod.apply(instance, args));
140
+ // Accumulated state from stream events
141
+ let llmResponse = '';
142
+ let finishReason = 'stop';
143
+ let inputTokens = 0;
144
+ let outputTokens = 0;
145
+ let cacheReadTokens = 0;
146
+ let cacheWriteTokens = 0;
147
+ let firstChunkTime = null;
148
+ const originalStream = response.stream;
149
+ async function* wrappedStream() {
150
+ try {
151
+ for await (const event of originalStream) {
152
+ if (firstChunkTime === null)
153
+ firstChunkTime = Date.now();
154
+ if (event.contentBlockDelta?.delta?.text)
155
+ llmResponse += event.contentBlockDelta.delta.text;
156
+ if (event.messageStop?.stopReason)
157
+ finishReason = mapFinishReason(event.messageStop.stopReason);
158
+ if (event.metadata?.usage) {
159
+ inputTokens = event.metadata.usage.inputTokens || 0;
160
+ outputTokens = event.metadata.usage.outputTokens || 0;
161
+ cacheReadTokens = event.metadata.usage.cacheReadInputTokens || 0;
162
+ cacheWriteTokens = event.metadata.usage.cacheWriteInputTokens || 0;
163
+ }
164
+ yield event;
165
+ }
166
+ }
167
+ finally {
168
+ // Record telemetry once the stream is fully consumed
169
+ try {
170
+ const duration = (Date.now() - startTime) / 1000;
171
+ const ttft = firstChunkTime !== null ? (firstChunkTime - startTime) / 1000 : 0;
172
+ const totalTokens = inputTokens + outputTokens;
173
+ const pricingInfo = await config_1.default.updatePricingJson(config_1.default.pricing_json);
174
+ const cost = helpers_1.default.getChatModelCost(modelId, pricingInfo, inputTokens, outputTokens);
175
+ BedrockWrapper.setBaseSpanAttributes(span, {
176
+ genAIEndpoint,
177
+ model: modelId,
178
+ cost,
179
+ aiSystem: BedrockWrapper.aiSystem,
180
+ });
181
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT);
182
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_IS_STREAM, true);
183
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_MODEL, modelId);
184
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS, inputTokens);
185
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS, outputTokens);
186
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_TOTAL_TOKENS, totalTokens);
187
+ span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_TOKEN_USAGE, totalTokens);
188
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON, [finishReason]);
189
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_TYPE, semantic_convention_1.default.GEN_AI_OUTPUT_TYPE_TEXT);
190
+ span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_OPERATION_DURATION, duration);
191
+ span.setAttribute(semantic_convention_1.default.GEN_AI_SERVER_TTFT, ttft);
192
+ span.setAttribute(semantic_convention_1.default.SERVER_ADDRESS, BEDROCK_SERVER_ADDRESS);
193
+ span.setAttribute(semantic_convention_1.default.SERVER_PORT, BEDROCK_SERVER_PORT);
194
+ if (cacheReadTokens > 0)
195
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_PROMPT_TOKENS_DETAILS_CACHE_READ, cacheReadTokens);
196
+ if (cacheWriteTokens > 0)
197
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_PROMPT_TOKENS_DETAILS_CACHE_WRITE, cacheWriteTokens);
198
+ const requestId = response.$metadata?.requestId;
199
+ if (requestId)
200
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_ID, requestId);
201
+ applyInferenceConfigAttributes(span, input.inferenceConfig || {});
202
+ if (config_1.default.traceContent) {
203
+ const messages = (input.messages || []).map((m) => ({
204
+ role: m.role,
205
+ content: m.content?.map((c) => c.text || '').join('') || '',
206
+ }));
207
+ const systemText = input.system?.[0]?.text;
208
+ span.setAttribute(semantic_convention_1.default.GEN_AI_INPUT_MESSAGES, helpers_1.default.buildInputMessages(messages, systemText));
209
+ if (systemText) {
210
+ span.setAttribute(semantic_convention_1.default.GEN_AI_SYSTEM_INSTRUCTIONS, JSON.stringify([{ type: 'text', content: systemText }]));
211
+ }
212
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES, helpers_1.default.buildOutputMessages(llmResponse, finishReason));
213
+ }
214
+ const metricParams = { genAIEndpoint, model: modelId, cost, aiSystem: BedrockWrapper.aiSystem };
215
+ base_wrapper_1.default.recordMetrics(span, metricParams);
216
+ }
217
+ catch { /* ignore telemetry errors in finally */ }
218
+ finally {
219
+ span.end();
220
+ }
221
+ }
222
+ }
223
+ return { ...response, stream: wrappedStream() };
224
+ }
225
+ static async _handleInvokeModelCommand(tracer, originalMethod, instance, args, commandName) {
226
+ const command = args[0];
227
+ const input = command.input || {};
228
+ const modelId = input.modelId || 'unknown';
229
+ const isStream = commandName === 'InvokeModelWithResponseStreamCommand';
230
+ const genAIEndpoint = isStream ? 'bedrock.invoke_model_stream' : 'bedrock.invoke_model';
231
+ const span = tracer.startSpan(genAIEndpoint, { kind: api_1.SpanKind.CLIENT });
232
+ return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), async () => {
233
+ const startTime = Date.now();
234
+ let metricParams;
235
+ try {
236
+ const response = await originalMethod.apply(instance, args);
237
+ const duration = (Date.now() - startTime) / 1000;
238
+ // Parse response body
239
+ let parsedBody = {};
240
+ let promptTokens = 0;
241
+ let completionTokens = 0;
242
+ let outputText = '';
243
+ let rawFinishReason = 'stop';
244
+ try {
245
+ const bodyBytes = response.body;
246
+ if (bodyBytes) {
247
+ const bodyStr = typeof bodyBytes === 'string'
248
+ ? bodyBytes
249
+ : Buffer.from(bodyBytes).toString('utf-8');
250
+ parsedBody = JSON.parse(bodyStr);
251
+ }
252
+ }
253
+ catch { /* ignore parse errors */ }
254
+ // Handle different provider response formats
255
+ if (modelId.startsWith('anthropic')) {
256
+ promptTokens = parsedBody.usage?.input_tokens || 0;
257
+ completionTokens = parsedBody.usage?.output_tokens || 0;
258
+ outputText = parsedBody.content?.[0]?.text || '';
259
+ rawFinishReason = parsedBody.stop_reason || 'stop';
260
+ }
261
+ else if (modelId.startsWith('amazon')) {
262
+ promptTokens = parsedBody.inputTextTokenCount || 0;
263
+ completionTokens = parsedBody.results?.[0]?.tokenCount || 0;
264
+ outputText = parsedBody.results?.[0]?.outputText || '';
265
+ rawFinishReason = parsedBody.results?.[0]?.completionReason || 'stop';
266
+ }
267
+ else if (modelId.startsWith('meta')) {
268
+ promptTokens = parsedBody.prompt_token_count || 0;
269
+ completionTokens = parsedBody.generation_token_count || 0;
270
+ outputText = parsedBody.generation || '';
271
+ rawFinishReason = parsedBody.stop_reason || 'stop';
272
+ }
273
+ else if (modelId.startsWith('mistral') || modelId.startsWith('mixtral')) {
274
+ promptTokens = parsedBody.usage?.prompt_tokens || 0;
275
+ completionTokens = parsedBody.usage?.completion_tokens || 0;
276
+ outputText = parsedBody.outputs?.[0]?.text || '';
277
+ rawFinishReason = parsedBody.outputs?.[0]?.stop_reason || 'stop';
278
+ }
279
+ else if (modelId.startsWith('ai21')) {
280
+ promptTokens = parsedBody.prompt?.tokens?.length || 0;
281
+ completionTokens = parsedBody.completions?.[0]?.data?.tokens?.length || 0;
282
+ outputText = parsedBody.completions?.[0]?.data?.text || '';
283
+ rawFinishReason = parsedBody.completions?.[0]?.finishReason?.reason || 'stop';
284
+ }
285
+ else {
286
+ outputText = parsedBody.output || parsedBody.generation || parsedBody.text || '';
287
+ }
288
+ const finishReason = mapFinishReason(rawFinishReason);
289
+ const totalTokens = promptTokens + completionTokens;
290
+ const pricingInfo = await config_1.default.updatePricingJson(config_1.default.pricing_json);
291
+ const cost = helpers_1.default.getChatModelCost(modelId, pricingInfo, promptTokens, completionTokens);
292
+ BedrockWrapper.setBaseSpanAttributes(span, {
293
+ genAIEndpoint,
294
+ model: modelId,
295
+ cost,
296
+ aiSystem: BedrockWrapper.aiSystem,
297
+ });
298
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT);
299
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_IS_STREAM, isStream);
300
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_MODEL, modelId);
301
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS, promptTokens);
302
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS, completionTokens);
303
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_TOTAL_TOKENS, totalTokens);
304
+ span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_TOKEN_USAGE, totalTokens);
305
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON, [finishReason]);
306
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_TYPE, semantic_convention_1.default.GEN_AI_OUTPUT_TYPE_TEXT);
307
+ span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_OPERATION_DURATION, duration);
308
+ span.setAttribute(semantic_convention_1.default.SERVER_ADDRESS, BEDROCK_SERVER_ADDRESS);
309
+ span.setAttribute(semantic_convention_1.default.SERVER_PORT, BEDROCK_SERVER_PORT);
310
+ const requestId = response.$metadata?.requestId;
311
+ if (requestId)
312
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_ID, requestId);
313
+ if (config_1.default.traceContent) {
314
+ try {
315
+ const reqBody = input.body
316
+ ? JSON.parse(typeof input.body === 'string' ? input.body : Buffer.from(input.body).toString())
317
+ : {};
318
+ const prompt = reqBody.prompt || reqBody.inputText || '';
319
+ if (prompt) {
320
+ span.setAttribute(semantic_convention_1.default.GEN_AI_INPUT_MESSAGES, helpers_1.default.buildInputMessages([{ role: 'user', content: prompt }]));
321
+ }
322
+ }
323
+ catch { /* ignore */ }
324
+ if (outputText) {
325
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES, helpers_1.default.buildOutputMessages(outputText, finishReason));
326
+ }
327
+ }
328
+ metricParams = { genAIEndpoint, model: modelId, cost, aiSystem: BedrockWrapper.aiSystem };
329
+ return response;
330
+ }
331
+ catch (e) {
332
+ helpers_1.default.handleException(span, e);
333
+ throw e;
334
+ }
335
+ finally {
336
+ span.end();
337
+ if (metricParams)
338
+ base_wrapper_1.default.recordMetrics(span, metricParams);
339
+ }
340
+ });
341
+ }
342
+ }
343
+ BedrockWrapper.aiSystem = semantic_convention_1.default.GEN_AI_SYSTEM_AWS_BEDROCK;
344
+ exports.default = BedrockWrapper;
345
+ //# sourceMappingURL=wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../../src/instrumentation/bedrock/wrapper.ts"],"names":[],"mappings":";;;;;AAAA,4CAAsE;AACtE,0DAAyC;AACzC,4DAA0C;AAC1C,oFAA2D;AAC3D,mEAAkE;AAElE,MAAM,sBAAsB,GAAG,+BAA+B,CAAC;AAC/D,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,GAAG,GAA2B;QAClC,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,YAAY;QACtB,gBAAgB,EAAE,gBAAgB;QAClC,sBAAsB,EAAE,gBAAgB;KACzC,CAAC;IACF,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;AACvC,CAAC;AAED,SAAS,8BAA8B,CAAC,IAAS,EAAE,eAAoB;IACrE,IAAI,eAAe,CAAC,SAAS,KAAK,SAAS;QACzC,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,yBAAyB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAC7F,IAAI,eAAe,CAAC,WAAW,KAAK,SAAS;QAC3C,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,0BAA0B,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IAChG,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS;QACpC,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,oBAAoB,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IACnF,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS;QACpC,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,oBAAoB,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IACnF,IAAI,eAAe,CAAC,aAAa,KAAK,SAAS;QAC7C,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,6BAA6B,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,cAAe,SAAQ,sBAAW;IAGtC,MAAM,CAAC,UAAU,CAAC,MAAc;QAC9B,OAAO,CAAC,cAAuC,EAAE,EAAE;YACjD,OAAO,KAAK,WAAsB,GAAG,IAAW;gBAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,OAAO;oBAAE,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAEtD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC;gBAEpD,IAAI,WAAW,KAAK,iBAAiB,EAAE,CAAC;oBACtC,OAAO,cAAc,CAAC,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACnF,CAAC;gBACD,IAAI,WAAW,KAAK,uBAAuB,EAAE,CAAC;oBAC5C,OAAO,cAAc,CAAC,4BAA4B,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzF,CAAC;gBACD,IAAI,WAAW,KAAK,oBAAoB,IAAI,WAAW,KAAK,sCAAsC,EAAE,CAAC;oBACnG,OAAO,cAAc,CAAC,yBAAyB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;gBACnG,CAAC;gBAED,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,sBAAsB,CACjC,MAAc,EACd,cAAmB,EACnB,QAAa,EACb,IAAW;QAEX,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC;QAC3C,MAAM,aAAa,GAAG,kBAAkB,CAAC;QAEzC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,cAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,OAAO,aAAO,CAAC,IAAI,CAAC,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,YAA4C,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC5D,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;gBAEjD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;gBACnC,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;gBAC5C,MAAM,gBAAgB,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;gBACjD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,YAAY,GAAG,gBAAgB,CAAC;gBACzE,MAAM,eAAe,GAAG,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAAC;gBACxD,MAAM,gBAAgB,GAAG,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC;gBAE1D,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC;gBAEpE,MAAM,WAAW,GAAG,MAAM,gBAAa,CAAC,iBAAiB,CAAC,gBAAa,CAAC,YAAY,CAAC,CAAC;gBACtF,MAAM,IAAI,GAAG,iBAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;gBAElG,cAAc,CAAC,qBAAqB,CAAC,IAAI,EAAE;oBACzC,aAAa;oBACb,KAAK,EAAE,OAAO;oBACd,IAAI;oBACJ,QAAQ,EAAE,cAAc,CAAC,QAAQ;iBAClC,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,gBAAgB,EAAE,6BAAkB,CAAC,0BAA0B,CAAC,CAAC;gBACtG,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;gBACtE,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;gBACrE,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;gBAC9E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;gBACnF,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;gBAC7E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;gBAC7E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,6BAA6B,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;gBACpF,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,kBAAkB,EAAE,6BAAkB,CAAC,uBAAuB,CAAC,CAAC;gBACrG,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;gBACjF,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;gBAC7E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;gBAEvE,IAAI,eAAe,GAAG,CAAC;oBACrB,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,6CAA6C,EAAE,eAAe,CAAC,CAAC;gBACvG,IAAI,gBAAgB,GAAG,CAAC;oBACtB,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,8CAA8C,EAAE,gBAAgB,CAAC,CAAC;gBAEzG,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;gBAChD,IAAI,SAAS;oBACX,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;gBAEtE,8BAA8B,CAAC,IAAI,EAAE,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;gBAElE,IAAI,gBAAa,CAAC,YAAY,EAAE,CAAC;oBAC/B,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;wBACvD,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;qBACjE,CAAC,CAAC,CAAC;oBACJ,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;oBAC3C,IAAI,CAAC,YAAY,CACf,6BAAkB,CAAC,qBAAqB,EACxC,iBAAa,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CACvD,CAAC;oBACF,IAAI,UAAU,EAAE,CAAC;wBACf,IAAI,CAAC,YAAY,CACf,6BAAkB,CAAC,0BAA0B,EAC7C,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CACxD,CAAC;oBACJ,CAAC;oBACD,MAAM,UAAU,GACd,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;oBAClF,IAAI,CAAC,YAAY,CACf,6BAAkB,CAAC,sBAAsB,EACzC,iBAAa,CAAC,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,CAC5D,CAAC;gBACJ,CAAC;gBAED,YAAY,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC;gBAC1F,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,iBAAa,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,CAAC;YACV,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,IAAI,YAAY;oBAAE,sBAAW,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAClE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,4BAA4B,CACvC,MAAc,EACd,cAAmB,EACnB,QAAa,EACb,IAAW;QAEX,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC;QAC3C,MAAM,aAAa,GAAG,yBAAyB,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,cAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAExE,oFAAoF;QACpF,MAAM,QAAQ,GAAG,MAAM,aAAO,CAAC,IAAI,CAAC,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAC9E,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CACrC,CAAC;QAEF,uCAAuC;QACvC,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,YAAY,GAAG,MAAM,CAAC;QAC1B,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,cAAc,GAAkB,IAAI,CAAC;QAEzC,MAAM,cAAc,GAAuB,QAAQ,CAAC,MAAM,CAAC;QAE3D,KAAK,SAAS,CAAC,CAAC,aAAa;YAC3B,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;oBACzC,IAAI,cAAc,KAAK,IAAI;wBAAE,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAEzD,IAAI,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI;wBACtC,WAAW,IAAI,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;oBACpD,IAAI,KAAK,CAAC,WAAW,EAAE,UAAU;wBAC/B,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;oBAC/D,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;wBAC1B,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;wBACpD,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;wBACtD,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAAC;wBACjE,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC;oBACrE,CAAC;oBACD,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,qDAAqD;gBACrD,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;oBACjD,MAAM,IAAI,GAAG,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/E,MAAM,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;oBAE/C,MAAM,WAAW,GAAG,MAAM,gBAAa,CAAC,iBAAiB,CAAC,gBAAa,CAAC,YAAY,CAAC,CAAC;oBACtF,MAAM,IAAI,GAAG,iBAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;oBAE7F,cAAc,CAAC,qBAAqB,CAAC,IAAI,EAAE;wBACzC,aAAa;wBACb,KAAK,EAAE,OAAO;wBACd,IAAI;wBACJ,QAAQ,EAAE,cAAc,CAAC,QAAQ;qBAClC,CAAC,CAAC;oBAEH,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,gBAAgB,EAAE,6BAAkB,CAAC,0BAA0B,CAAC,CAAC;oBACtG,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;oBACrE,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;oBACrE,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;oBAC7E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC;oBAC/E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;oBAC7E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;oBAC7E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,6BAA6B,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;oBACpF,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,kBAAkB,EAAE,6BAAkB,CAAC,uBAAuB,CAAC,CAAC;oBACrG,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;oBACjF,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;oBAC/D,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;oBAC7E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;oBAEvE,IAAI,eAAe,GAAG,CAAC;wBACrB,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,6CAA6C,EAAE,eAAe,CAAC,CAAC;oBACvG,IAAI,gBAAgB,GAAG,CAAC;wBACtB,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,8CAA8C,EAAE,gBAAgB,CAAC,CAAC;oBAEzG,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;oBAChD,IAAI,SAAS;wBACX,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;oBAEtE,8BAA8B,CAAC,IAAI,EAAE,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;oBAElE,IAAI,gBAAa,CAAC,YAAY,EAAE,CAAC;wBAC/B,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;4BACvD,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;yBACjE,CAAC,CAAC,CAAC;wBACJ,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;wBAC3C,IAAI,CAAC,YAAY,CACf,6BAAkB,CAAC,qBAAqB,EACxC,iBAAa,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CACvD,CAAC;wBACF,IAAI,UAAU,EAAE,CAAC;4BACf,IAAI,CAAC,YAAY,CACf,6BAAkB,CAAC,0BAA0B,EAC7C,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CACxD,CAAC;wBACJ,CAAC;wBACD,IAAI,CAAC,YAAY,CACf,6BAAkB,CAAC,sBAAsB,EACzC,iBAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC,CAC7D,CAAC;oBACJ,CAAC;oBAED,MAAM,YAAY,GAAuB,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC;oBACpH,sBAAW,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAChD,CAAC;gBAAC,MAAM,CAAC,CAAC,wCAAwC,CAAC,CAAC;wBAAS,CAAC;oBAC5D,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,yBAAyB,CACpC,MAAc,EACd,cAAmB,EACnB,QAAa,EACb,IAAW,EACX,WAAmB;QAEnB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC;QAC3C,MAAM,QAAQ,GAAG,WAAW,KAAK,sCAAsC,CAAC;QACxE,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,sBAAsB,CAAC;QAExF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,cAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,OAAO,aAAO,CAAC,IAAI,CAAC,WAAK,CAAC,OAAO,CAAC,aAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,YAA4C,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC5D,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;gBAEjD,sBAAsB;gBACtB,IAAI,UAAU,GAAQ,EAAE,CAAC;gBACzB,IAAI,YAAY,GAAG,CAAC,CAAC;gBACrB,IAAI,gBAAgB,GAAG,CAAC,CAAC;gBACzB,IAAI,UAAU,GAAG,EAAE,CAAC;gBACpB,IAAI,eAAe,GAAG,MAAM,CAAC;gBAE7B,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;oBAChC,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,OAAO,GAAG,OAAO,SAAS,KAAK,QAAQ;4BAC3C,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;wBAC7C,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;gBAErC,6CAA6C;gBAC7C,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBACpC,YAAY,GAAG,UAAU,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;oBACnD,gBAAgB,GAAG,UAAU,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;oBACxD,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;oBACjD,eAAe,GAAG,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC;gBACrD,CAAC;qBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxC,YAAY,GAAG,UAAU,CAAC,mBAAmB,IAAI,CAAC,CAAC;oBACnD,gBAAgB,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,CAAC,CAAC;oBAC5D,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC;oBACvD,eAAe,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;gBACxE,CAAC;qBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtC,YAAY,GAAG,UAAU,CAAC,kBAAkB,IAAI,CAAC,CAAC;oBAClD,gBAAgB,GAAG,UAAU,CAAC,sBAAsB,IAAI,CAAC,CAAC;oBAC1D,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC;oBACzC,eAAe,GAAG,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC;gBACrD,CAAC;qBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1E,YAAY,GAAG,UAAU,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;oBACpD,gBAAgB,GAAG,UAAU,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC,CAAC;oBAC5D,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;oBACjD,eAAe,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,MAAM,CAAC;gBACnE,CAAC;qBAAM,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtC,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;oBACtD,gBAAgB,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;oBAC1E,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;oBAC3D,eAAe,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,IAAI,MAAM,CAAC;gBAChF,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;gBACnF,CAAC;gBAED,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;gBACtD,MAAM,WAAW,GAAG,YAAY,GAAG,gBAAgB,CAAC;gBACpD,MAAM,WAAW,GAAG,MAAM,gBAAa,CAAC,iBAAiB,CAAC,gBAAa,CAAC,YAAY,CAAC,CAAC;gBACtF,MAAM,IAAI,GAAG,iBAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;gBAElG,cAAc,CAAC,qBAAqB,CAAC,IAAI,EAAE;oBACzC,aAAa;oBACb,KAAK,EAAE,OAAO;oBACd,IAAI;oBACJ,QAAQ,EAAE,cAAc,CAAC,QAAQ;iBAClC,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,gBAAgB,EAAE,6BAAkB,CAAC,0BAA0B,CAAC,CAAC;gBACtG,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;gBACzE,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;gBACrE,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;gBAC9E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;gBACnF,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;gBAC7E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;gBAC7E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,6BAA6B,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;gBACpF,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,kBAAkB,EAAE,6BAAkB,CAAC,uBAAuB,CAAC,CAAC;gBACrG,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;gBACjF,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;gBAC7E,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;gBAEvE,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;gBAChD,IAAI,SAAS;oBACX,IAAI,CAAC,YAAY,CAAC,6BAAkB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;gBAEtE,IAAI,gBAAa,CAAC,YAAY,EAAE,CAAC;oBAC/B,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI;4BACxB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;4BAC9F,CAAC,CAAC,EAAE,CAAC;wBACP,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;wBACzD,IAAI,MAAM,EAAE,CAAC;4BACX,IAAI,CAAC,YAAY,CACf,6BAAkB,CAAC,qBAAqB,EACxC,iBAAa,CAAC,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CACtE,CAAC;wBACJ,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;oBAExB,IAAI,UAAU,EAAE,CAAC;wBACf,IAAI,CAAC,YAAY,CACf,6BAAkB,CAAC,sBAAsB,EACzC,iBAAa,CAAC,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,CAC5D,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,YAAY,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC;gBAC1F,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,iBAAa,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,CAAC;YACV,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,GAAG,EAAE,CAAC;gBACX,IAAI,YAAY;oBAAE,sBAAW,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAClE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AAtXM,uBAAQ,GAAG,6BAAkB,CAAC,yBAAyB,CAAC;AAyXjE,kBAAe,cAAc,CAAC"}
@@ -12,6 +12,11 @@ const mistral_1 = __importDefault(require("./mistral"));
12
12
  const google_ai_1 = __importDefault(require("./google-ai"));
13
13
  const together_1 = __importDefault(require("./together"));
14
14
  const ollama_1 = __importDefault(require("./ollama"));
15
+ const vercel_ai_1 = __importDefault(require("./vercel-ai"));
16
+ const langchain_1 = __importDefault(require("./langchain"));
17
+ const pinecone_1 = __importDefault(require("./pinecone"));
18
+ const bedrock_1 = __importDefault(require("./bedrock"));
19
+ const llamaindex_1 = __importDefault(require("./llamaindex"));
15
20
  class Instrumentations {
16
21
  static setup(tracerProvider, disabledInstrumentations = [], instrumentations) {
17
22
  if (instrumentations === undefined) {
@@ -63,6 +68,11 @@ Instrumentations.availableInstrumentations = {
63
68
  'google-ai': new google_ai_1.default(),
64
69
  together: new together_1.default(),
65
70
  ollama: new ollama_1.default(),
71
+ 'vercel-ai': new vercel_ai_1.default(),
72
+ langchain: new langchain_1.default(),
73
+ pinecone: new pinecone_1.default(),
74
+ bedrock: new bedrock_1.default(),
75
+ llamaindex: new llamaindex_1.default(),
66
76
  };
67
77
  exports.default = Instrumentations;
68
78
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/instrumentation/index.ts"],"names":[],"mappings":";;;;;AAAA,oEAA0E;AAI1E,sDAA6C;AAC7C,4DAAmD;AACnD,sDAA6C;AAC7C,kDAAyC;AACzC,wDAA+C;AAC/C,4DAAkD;AAClD,0DAAiD;AACjD,sDAA6C;AAE7C,MAAqB,gBAAgB;IAYnC,MAAM,CAAC,KAAK,CACV,cAA8B,EAC9B,2BAAqC,EAAE,EACvC,gBAA0C;QAE1C,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,wBAAwB,GAAG,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,CAAC;YAC5F,IAAA,0CAAwB,EAAC;gBACvB,gBAAgB,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;gBACzF,cAAc;aACf,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,wBAAwB,GAAG,IAAI,CAAC,2BAA2B,CAC/D,wBAAwB,EACxB,gBAAgB,CACjB,CAAC;YACF,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,EAAE,EAAE;gBACxD,IAAI,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;oBACxD,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;gBACtE,CAAC;gBACD,IAAI,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;oBAClD,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAA,0CAAwB,EAAC;gBACvB,cAAc;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,CAAC,2BAA2B,CAChC,wBAAkC,EAClC,gBAA0C;QAE1C,MAAM,yBAAyB,GAAG,gBAAgB,IAAI,IAAI,CAAC,yBAAyB,CAAC;QACrF,OAAO,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC;aAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzC,IAAI,OAAO,yBAAyB,CAAC,CAAwB,CAAC,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBACtF,yBAAyB,CAAC,CAAwB,CAAC,CAAC,OAAO,EAAE,CAAC;gBAChE,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,OAAO,yBAAyB,CAAC,CAAwB,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACrF,yBAAyB,CAAC,CAAwB,CAAC,CAAC,MAAM,EAAE,CAAC;YAC/D,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAwB,EAAE,yBAAyB,CAAC,CAAwB,CAAC,CAAC,CAAC,CAAC;IACjG,CAAC;;AA9DM,0CAAyB,GAA4B;IAC1D,MAAM,EAAE,IAAI,gBAAqB,EAAE;IACnC,SAAS,EAAE,IAAI,mBAAwB,EAAE;IACzC,MAAM,EAAE,IAAI,gBAAqB,EAAE;IACnC,IAAI,EAAE,IAAI,cAAmB,EAAE;IAC/B,OAAO,EAAE,IAAI,iBAAsB,EAAE;IACrC,WAAW,EAAE,IAAI,mBAAuB,EAAE;IAC1C,QAAQ,EAAE,IAAI,kBAAuB,EAAE;IACvC,MAAM,EAAE,IAAI,gBAAqB,EAAE;CACpC,CAAC;kBAViB,gBAAgB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/instrumentation/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { InstrumentationBase, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';
2
+ import { InstrumentationConfig } from '@opentelemetry/instrumentation';
3
+ export interface LangChainInstrumentationConfig extends InstrumentationConfig {
4
+ }
5
+ export default class OpenlitLangChainInstrumentation extends InstrumentationBase {
6
+ private _callbackManager;
7
+ private _ritmHook;
8
+ constructor(config?: LangChainInstrumentationConfig);
9
+ protected init(): void | InstrumentationModuleDefinition | InstrumentationModuleDefinition[];
10
+ /** Override enable() to install a direct RITM Hook rather than going through the singleton. */
11
+ enable(): void;
12
+ /** Override disable() to remove our direct RITM Hook. */
13
+ disable(): void;
14
+ /** Called from tests / manual usage — pass the @langchain/core/callbacks/manager exports. */
15
+ manualPatch(callbacksManagerModule: any): void;
16
+ /**
17
+ * Scan require.cache for @langchain/core's dist/callbacks/manager.cjs.
18
+ * It is always loaded as a relative dep before the chat_models hook fires.
19
+ */
20
+ private _patchFromCache;
21
+ private _applyPatch;
22
+ private _unpatch;
23
+ }
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const instrumentation_1 = require("@opentelemetry/instrumentation");
7
+ const constant_1 = require("../../constant");
8
+ const wrapper_1 = __importDefault(require("./wrapper"));
9
+ class OpenlitLangChainInstrumentation extends instrumentation_1.InstrumentationBase {
10
+ constructor(config = {}) {
11
+ super(`${constant_1.INSTRUMENTATION_PREFIX}/instrumentation-langchain`, '1.0.0', config);
12
+ this._callbackManager = null;
13
+ this._ritmHook = null;
14
+ }
15
+ init() {
16
+ // We bypass OTel's RequireInTheMiddleSingleton here because it uses a null-whitelist
17
+ // RITM instance, which causes RITM to report `name` as the `fullModuleName` (including
18
+ // the .cjs extension), e.g. '@langchain/core/language_models/chat_models.cjs'.
19
+ // The trie search then fails to match our registered bare name (without .cjs).
20
+ // Instead, we set up a direct require-in-the-middle Hook in enable() with a proper
21
+ // whitelist, which causes RITM to preserve the original specifier as `name`.
22
+ return [];
23
+ }
24
+ /** Override enable() to install a direct RITM Hook rather than going through the singleton. */
25
+ enable() {
26
+ super.enable(); // sets this._enabled = true, initialises tracer
27
+ if (this._ritmHook)
28
+ return;
29
+ try {
30
+ // Require RITM directly — it is a transitive dep of @opentelemetry/instrumentation.
31
+ // Using a whitelist ['@langchain/core/language_models/chat_models'] causes RITM to
32
+ // preserve the original module specifier as `name` (avoiding the .cjs issue).
33
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
34
+ const { Hook } = require('require-in-the-middle');
35
+ this._ritmHook = new Hook(['@langchain/core/language_models/chat_models'], { internals: true }, (exports) => {
36
+ this._patchFromCache();
37
+ return exports;
38
+ });
39
+ }
40
+ catch { /* require-in-the-middle not available — no-op */ }
41
+ }
42
+ /** Override disable() to remove our direct RITM Hook. */
43
+ disable() {
44
+ super.disable();
45
+ this._ritmHook?.unhook?.();
46
+ this._ritmHook = null;
47
+ this._unpatch();
48
+ }
49
+ /** Called from tests / manual usage — pass the @langchain/core/callbacks/manager exports. */
50
+ manualPatch(callbacksManagerModule) {
51
+ const CallbackManager = callbacksManagerModule?.CallbackManager;
52
+ if (CallbackManager) {
53
+ this._callbackManager = CallbackManager;
54
+ this._applyPatch(CallbackManager);
55
+ }
56
+ }
57
+ /**
58
+ * Scan require.cache for @langchain/core's dist/callbacks/manager.cjs.
59
+ * It is always loaded as a relative dep before the chat_models hook fires.
60
+ */
61
+ _patchFromCache() {
62
+ try {
63
+ const cache = require.cache;
64
+ for (const filepath of Object.keys(cache)) {
65
+ if (filepath.includes('@langchain') &&
66
+ filepath.includes('callbacks') &&
67
+ filepath.includes('manager') &&
68
+ !filepath.endsWith('.map')) {
69
+ const mod = cache[filepath];
70
+ const CallbackManager = mod?.exports?.CallbackManager;
71
+ if (CallbackManager && typeof CallbackManager._configureSync === 'function') {
72
+ this._callbackManager = CallbackManager;
73
+ this._applyPatch(CallbackManager);
74
+ return;
75
+ }
76
+ }
77
+ }
78
+ }
79
+ catch (e) {
80
+ console.error('LangChain: error scanning require.cache for CallbackManager:', e);
81
+ }
82
+ }
83
+ _applyPatch(CallbackManager) {
84
+ try {
85
+ // Patch _configureSync — the single low-level entry point called by both
86
+ // CallbackManager.configure and getCallbackManagerForConfig (Runnables/chains).
87
+ if ((0, instrumentation_1.isWrapped)(CallbackManager._configureSync)) {
88
+ this._unwrap(CallbackManager, '_configureSync');
89
+ }
90
+ this._wrap(CallbackManager, '_configureSync', wrapper_1.default._patchConfigure(this.tracer));
91
+ }
92
+ catch (e) {
93
+ console.error('Error in LangChain _patch method:', e);
94
+ }
95
+ }
96
+ _unpatch() {
97
+ if (!this._callbackManager)
98
+ return;
99
+ try {
100
+ if ((0, instrumentation_1.isWrapped)(this._callbackManager._configureSync)) {
101
+ this._unwrap(this._callbackManager, '_configureSync');
102
+ }
103
+ }
104
+ catch { /* ignore */ }
105
+ this._callbackManager = null;
106
+ }
107
+ }
108
+ exports.default = OpenlitLangChainInstrumentation;
109
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/instrumentation/langchain/index.ts"],"names":[],"mappings":"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"}