@respan/tracing 1.0.45

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 (75) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +860 -0
  3. package/dist/constants/index.d.ts +8 -0
  4. package/dist/constants/index.js +9 -0
  5. package/dist/constants/index.js.map +1 -0
  6. package/dist/contexts/index.d.ts +1 -0
  7. package/dist/contexts/index.js +2 -0
  8. package/dist/contexts/index.js.map +1 -0
  9. package/dist/contexts/span.d.ts +9 -0
  10. package/dist/contexts/span.js +39 -0
  11. package/dist/contexts/span.js.map +1 -0
  12. package/dist/decorators/base.d.ts +32 -0
  13. package/dist/decorators/base.js +242 -0
  14. package/dist/decorators/base.js.map +1 -0
  15. package/dist/decorators/index.d.ts +1 -0
  16. package/dist/decorators/index.js +2 -0
  17. package/dist/decorators/index.js.map +1 -0
  18. package/dist/index.d.ts +10 -0
  19. package/dist/index.js +8 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/instrumentation/index.d.ts +2 -0
  22. package/dist/instrumentation/index.js +3 -0
  23. package/dist/instrumentation/index.js.map +1 -0
  24. package/dist/instrumentation/loader.d.ts +5 -0
  25. package/dist/instrumentation/loader.js +104 -0
  26. package/dist/instrumentation/loader.js.map +1 -0
  27. package/dist/instrumentation/manager.d.ts +29 -0
  28. package/dist/instrumentation/manager.js +564 -0
  29. package/dist/instrumentation/manager.js.map +1 -0
  30. package/dist/main.d.ts +162 -0
  31. package/dist/main.js +212 -0
  32. package/dist/main.js.map +1 -0
  33. package/dist/processor/composite.d.ts +29 -0
  34. package/dist/processor/composite.js +106 -0
  35. package/dist/processor/composite.js.map +1 -0
  36. package/dist/processor/filtering.d.ts +19 -0
  37. package/dist/processor/filtering.js +78 -0
  38. package/dist/processor/filtering.js.map +1 -0
  39. package/dist/processor/index.d.ts +3 -0
  40. package/dist/processor/index.js +4 -0
  41. package/dist/processor/index.js.map +1 -0
  42. package/dist/processor/manager.d.ts +61 -0
  43. package/dist/processor/manager.js +111 -0
  44. package/dist/processor/manager.js.map +1 -0
  45. package/dist/types/clientTypes.d.ts +188 -0
  46. package/dist/types/clientTypes.js +22 -0
  47. package/dist/types/clientTypes.js.map +1 -0
  48. package/dist/types/decoratorTypes.d.ts +6 -0
  49. package/dist/types/decoratorTypes.js +2 -0
  50. package/dist/types/decoratorTypes.js.map +1 -0
  51. package/dist/types/index.d.ts +3 -0
  52. package/dist/types/index.js +4 -0
  53. package/dist/types/index.js.map +1 -0
  54. package/dist/types/instrumentationTypes.d.ts +25 -0
  55. package/dist/types/instrumentationTypes.js +82 -0
  56. package/dist/types/instrumentationTypes.js.map +1 -0
  57. package/dist/utils/client.d.ts +168 -0
  58. package/dist/utils/client.js +151 -0
  59. package/dist/utils/client.js.map +1 -0
  60. package/dist/utils/context.d.ts +28 -0
  61. package/dist/utils/context.js +44 -0
  62. package/dist/utils/context.js.map +1 -0
  63. package/dist/utils/index.d.ts +5 -0
  64. package/dist/utils/index.js +8 -0
  65. package/dist/utils/index.js.map +1 -0
  66. package/dist/utils/span.d.ts +65 -0
  67. package/dist/utils/span.js +269 -0
  68. package/dist/utils/span.js.map +1 -0
  69. package/dist/utils/spanBuffer.d.ts +94 -0
  70. package/dist/utils/spanBuffer.js +147 -0
  71. package/dist/utils/spanBuffer.js.map +1 -0
  72. package/dist/utils/tracing.d.ts +31 -0
  73. package/dist/utils/tracing.js +239 -0
  74. package/dist/utils/tracing.js.map +1 -0
  75. package/package.json +72 -0
@@ -0,0 +1,564 @@
1
+ import { loadInstrumentation } from "./loader.js";
2
+ import { INSTRUMENTATION_INFO } from "../types/index.js";
3
+ // Array to hold all instrumentations that will be loaded dynamically
4
+ const instrumentations = [];
5
+ // Store instrumentation instances for configuration
6
+ let openAIInstrumentation;
7
+ let anthropicInstrumentation;
8
+ let azureOpenAIInstrumentation;
9
+ let cohereInstrumentation;
10
+ let vertexaiInstrumentation;
11
+ let bedrockInstrumentation;
12
+ let langchainInstrumentation;
13
+ let llamaIndexInstrumentation;
14
+ let pineconeInstrumentation;
15
+ let chromadbInstrumentation;
16
+ let qdrantInstrumentation;
17
+ let togetherInstrumentation;
18
+ /**
19
+ * Get all loaded instrumentations
20
+ */
21
+ export const getInstrumentations = () => {
22
+ return [...instrumentations];
23
+ };
24
+ /**
25
+ * Get a specific instrumentation instance by name
26
+ */
27
+ export const getInstrumentationInstance = (name) => {
28
+ switch (name) {
29
+ case "openAI": return openAIInstrumentation;
30
+ case "anthropic": return anthropicInstrumentation;
31
+ case "azureOpenAI": return azureOpenAIInstrumentation;
32
+ case "cohere": return cohereInstrumentation;
33
+ case "googleVertexAI": return vertexaiInstrumentation;
34
+ case "bedrock": return bedrockInstrumentation;
35
+ case "langChain": return langchainInstrumentation;
36
+ case "llamaIndex": return llamaIndexInstrumentation;
37
+ case "pinecone": return pineconeInstrumentation;
38
+ case "chromaDB": return chromadbInstrumentation;
39
+ case "qdrant": return qdrantInstrumentation;
40
+ case "together": return togetherInstrumentation;
41
+ default: return undefined;
42
+ }
43
+ };
44
+ /**
45
+ * Configure trace content for instrumentations
46
+ */
47
+ export const configureTraceContent = (enabled) => {
48
+ const traceContent = enabled;
49
+ console.debug(`[Respan Debug] Configuring trace content: ${enabled ? 'enabled' : 'disabled'}`);
50
+ openAIInstrumentation?.setConfig?.({ traceContent });
51
+ anthropicInstrumentation?.setConfig?.({ traceContent });
52
+ azureOpenAIInstrumentation?.setConfig?.({ traceContent });
53
+ llamaIndexInstrumentation?.setConfig?.({ traceContent });
54
+ vertexaiInstrumentation?.setConfig?.({ traceContent });
55
+ bedrockInstrumentation?.setConfig?.({ traceContent });
56
+ cohereInstrumentation?.setConfig?.({ traceContent });
57
+ chromadbInstrumentation?.setConfig?.({ traceContent });
58
+ togetherInstrumentation?.setConfig?.({ traceContent });
59
+ };
60
+ /**
61
+ * Initialize all available instrumentations automatically.
62
+ * This is used when no specific instrumentModules are provided.
63
+ */
64
+ export const initInstrumentations = async (disabledInstrumentations = [], showInstallWarnings = true) => {
65
+ const exceptionLogger = (e) => console.error("Instrumentation error:", e);
66
+ console.info("[Respan] Initializing automatic instrumentation discovery...");
67
+ // Track instrumentation loading results
68
+ const loadingResults = [];
69
+ // Clear the instrumentations array
70
+ instrumentations.length = 0;
71
+ // Define all instrumentations to attempt loading
72
+ const instrumentationsToLoad = [
73
+ {
74
+ name: "openAI",
75
+ description: "OpenAI API instrumentation",
76
+ loadFunction: async () => {
77
+ const { OpenAIInstrumentation } = await import("@traceloop/instrumentation-openai");
78
+ openAIInstrumentation = new OpenAIInstrumentation({
79
+ exceptionLogger: (e) => console.error("OpenAI instrumentation error:", e),
80
+ });
81
+ return openAIInstrumentation;
82
+ },
83
+ },
84
+ {
85
+ name: "anthropic",
86
+ description: "Anthropic API instrumentation",
87
+ loadFunction: async () => {
88
+ const { AnthropicInstrumentation } = await import("@traceloop/instrumentation-anthropic");
89
+ anthropicInstrumentation = new AnthropicInstrumentation({
90
+ exceptionLogger,
91
+ });
92
+ return anthropicInstrumentation;
93
+ },
94
+ },
95
+ {
96
+ name: "azureOpenAI",
97
+ description: "Azure OpenAI instrumentation",
98
+ loadFunction: async () => {
99
+ const { AzureOpenAIInstrumentation } = await import("@traceloop/instrumentation-azure");
100
+ azureOpenAIInstrumentation = new AzureOpenAIInstrumentation({
101
+ exceptionLogger,
102
+ });
103
+ return azureOpenAIInstrumentation;
104
+ },
105
+ },
106
+ {
107
+ name: "cohere",
108
+ description: "Cohere API instrumentation",
109
+ loadFunction: async () => {
110
+ const { CohereInstrumentation } = await import("@traceloop/instrumentation-cohere");
111
+ cohereInstrumentation = new CohereInstrumentation({ exceptionLogger });
112
+ return cohereInstrumentation;
113
+ },
114
+ },
115
+ {
116
+ name: "googleVertexAI",
117
+ description: "Google Vertex AI instrumentation",
118
+ loadFunction: async () => {
119
+ const { VertexAIInstrumentation } = await import("@traceloop/instrumentation-vertexai");
120
+ vertexaiInstrumentation = new VertexAIInstrumentation({
121
+ exceptionLogger,
122
+ });
123
+ return vertexaiInstrumentation;
124
+ },
125
+ },
126
+ {
127
+ name: "bedrock",
128
+ description: "AWS Bedrock instrumentation",
129
+ loadFunction: async () => {
130
+ const { BedrockInstrumentation } = await import("@traceloop/instrumentation-bedrock");
131
+ bedrockInstrumentation = new BedrockInstrumentation({
132
+ exceptionLogger,
133
+ });
134
+ return bedrockInstrumentation;
135
+ },
136
+ },
137
+ {
138
+ name: "langChain",
139
+ description: "LangChain framework instrumentation",
140
+ loadFunction: async () => {
141
+ const { LangChainInstrumentation } = await import("@traceloop/instrumentation-langchain");
142
+ langchainInstrumentation = new LangChainInstrumentation({
143
+ exceptionLogger,
144
+ });
145
+ return langchainInstrumentation;
146
+ },
147
+ },
148
+ {
149
+ name: "llamaIndex",
150
+ description: "LlamaIndex framework instrumentation",
151
+ loadFunction: async () => {
152
+ const { LlamaIndexInstrumentation } = await import("@traceloop/instrumentation-llamaindex");
153
+ llamaIndexInstrumentation = new LlamaIndexInstrumentation({
154
+ exceptionLogger,
155
+ });
156
+ return llamaIndexInstrumentation;
157
+ },
158
+ },
159
+ {
160
+ name: "pinecone",
161
+ description: "Pinecone vector database instrumentation",
162
+ loadFunction: async () => {
163
+ const { PineconeInstrumentation } = await import("@traceloop/instrumentation-pinecone");
164
+ pineconeInstrumentation = new PineconeInstrumentation({
165
+ exceptionLogger,
166
+ });
167
+ return pineconeInstrumentation;
168
+ },
169
+ },
170
+ {
171
+ name: "chromaDB",
172
+ description: "ChromaDB vector database instrumentation",
173
+ loadFunction: async () => {
174
+ const { ChromaDBInstrumentation } = await import("@traceloop/instrumentation-chromadb");
175
+ chromadbInstrumentation = new ChromaDBInstrumentation({
176
+ exceptionLogger,
177
+ });
178
+ return chromadbInstrumentation;
179
+ },
180
+ },
181
+ {
182
+ name: "qdrant",
183
+ description: "Qdrant vector database instrumentation",
184
+ loadFunction: async () => {
185
+ const { QdrantInstrumentation } = await import("@traceloop/instrumentation-qdrant");
186
+ qdrantInstrumentation = new QdrantInstrumentation({ exceptionLogger });
187
+ return qdrantInstrumentation;
188
+ },
189
+ },
190
+ {
191
+ name: "together",
192
+ description: "Together AI instrumentation",
193
+ loadFunction: async () => {
194
+ const { TogetherInstrumentation } = await import("@traceloop/instrumentation-together");
195
+ togetherInstrumentation = new TogetherInstrumentation({
196
+ exceptionLogger,
197
+ });
198
+ return togetherInstrumentation;
199
+ },
200
+ },
201
+ ];
202
+ // Load each instrumentation
203
+ for (const { name, description, loadFunction } of instrumentationsToLoad) {
204
+ if (disabledInstrumentations.includes(name)) {
205
+ loadingResults.push({ name, status: "disabled", description });
206
+ console.debug(`[Respan Debug] Skipping ${description} (disabled by configuration)`);
207
+ continue;
208
+ }
209
+ try {
210
+ console.debug(`[Respan Debug] Attempting to load ${description}...`);
211
+ const instrumentation = await loadFunction();
212
+ instrumentations.push(instrumentation);
213
+ loadingResults.push({ name, status: "success", description });
214
+ console.debug(`[Respan Debug] Successfully loaded ${description}`);
215
+ }
216
+ catch (error) {
217
+ loadingResults.push({ name, status: "failed", description, error });
218
+ // Provide installation instructions for failed instrumentations (only if showInstallWarnings is true)
219
+ if (showInstallWarnings) {
220
+ const info = INSTRUMENTATION_INFO[name];
221
+ if (info) {
222
+ console.info(`[Respan] ${description} is not available. To enable it, install the required package:\n ${info.installCommand}`);
223
+ }
224
+ }
225
+ console.debug(`[Respan Debug] Failed to load ${description}:`, error);
226
+ }
227
+ }
228
+ // Print summary
229
+ const successful = loadingResults.filter((r) => r.status === "success");
230
+ const failed = loadingResults.filter((r) => r.status === "failed");
231
+ const disabled = loadingResults.filter((r) => r.status === "disabled");
232
+ console.info(`[Respan] Instrumentation loading complete: ${successful.length} loaded, ${failed.length} failed, ${disabled.length} disabled`);
233
+ if (successful.length > 0) {
234
+ console.info(`[Respan] Successfully loaded: ${successful
235
+ .map((r) => r.name)
236
+ .join(", ")}`);
237
+ }
238
+ if (disabled.length > 0) {
239
+ console.info(`[Respan] Disabled instrumentations: ${disabled
240
+ .map((r) => r.name)
241
+ .join(", ")}`);
242
+ }
243
+ if (failed.length > 0) {
244
+ console.debug(`[Respan Debug] Failed to load: ${failed
245
+ .map((r) => r.name)
246
+ .join(", ")}`);
247
+ }
248
+ };
249
+ /**
250
+ * Manually initialize instrumentations with provided modules.
251
+ * This is similar to Traceloop's approach for environments like Next.js
252
+ * where dynamic imports might not work properly.
253
+ */
254
+ export const manuallyInitInstrumentations = async (instrumentModules, disabledInstrumentations = []) => {
255
+ const exceptionLogger = (e) => console.error("Instrumentation error:", e);
256
+ console.info("[Respan] Initializing manual instrumentation with provided modules...");
257
+ console.debug("[Respan Debug] Provided modules:", Object.keys(instrumentModules));
258
+ // Track instrumentation loading results (using string for name to allow custom modules)
259
+ const loadingResults = [];
260
+ // Clear the instrumentations array
261
+ instrumentations.length = 0;
262
+ // Define all possible manual instrumentations
263
+ const manualInstrumentationConfigs = [
264
+ {
265
+ name: "openAI",
266
+ description: "OpenAI API instrumentation",
267
+ moduleKey: "openAI",
268
+ initFunction: async (module) => {
269
+ const { OpenAIInstrumentation } = await import("@traceloop/instrumentation-openai");
270
+ openAIInstrumentation = new OpenAIInstrumentation({
271
+ exceptionLogger,
272
+ });
273
+ instrumentations.push(openAIInstrumentation);
274
+ openAIInstrumentation.manuallyInstrument(module);
275
+ return openAIInstrumentation;
276
+ },
277
+ },
278
+ {
279
+ name: "anthropic",
280
+ description: "Anthropic API instrumentation",
281
+ moduleKey: "anthropic",
282
+ initFunction: async (module) => {
283
+ const { AnthropicInstrumentation } = await import("@traceloop/instrumentation-anthropic");
284
+ anthropicInstrumentation = new AnthropicInstrumentation({
285
+ exceptionLogger,
286
+ });
287
+ instrumentations.push(anthropicInstrumentation);
288
+ anthropicInstrumentation.manuallyInstrument(module);
289
+ return anthropicInstrumentation;
290
+ },
291
+ },
292
+ {
293
+ name: "azureOpenAI",
294
+ description: "Azure OpenAI instrumentation",
295
+ moduleKey: "azureOpenAI",
296
+ initFunction: async (module) => {
297
+ const { AzureOpenAIInstrumentation } = await import("@traceloop/instrumentation-azure");
298
+ azureOpenAIInstrumentation = new AzureOpenAIInstrumentation({
299
+ exceptionLogger,
300
+ });
301
+ instrumentations.push(azureOpenAIInstrumentation);
302
+ azureOpenAIInstrumentation.manuallyInstrument(module);
303
+ return azureOpenAIInstrumentation;
304
+ },
305
+ },
306
+ {
307
+ name: "cohere",
308
+ description: "Cohere API instrumentation",
309
+ moduleKey: "cohere",
310
+ initFunction: async (module) => {
311
+ const { CohereInstrumentation } = await import("@traceloop/instrumentation-cohere");
312
+ cohereInstrumentation = new CohereInstrumentation({ exceptionLogger });
313
+ instrumentations.push(cohereInstrumentation);
314
+ cohereInstrumentation.manuallyInstrument(module);
315
+ return cohereInstrumentation;
316
+ },
317
+ },
318
+ {
319
+ name: "googleVertexAI",
320
+ description: "Google Vertex AI instrumentation",
321
+ moduleKey: "googleVertexAI",
322
+ initFunction: async (module) => {
323
+ const { VertexAIInstrumentation } = await import("@traceloop/instrumentation-vertexai");
324
+ vertexaiInstrumentation = new VertexAIInstrumentation({
325
+ exceptionLogger,
326
+ });
327
+ instrumentations.push(vertexaiInstrumentation);
328
+ vertexaiInstrumentation.manuallyInstrument(module);
329
+ return vertexaiInstrumentation;
330
+ },
331
+ },
332
+ {
333
+ name: "googleAIPlatform",
334
+ description: "Google AI Platform instrumentation",
335
+ moduleKey: "googleAIPlatform",
336
+ initFunction: async (module) => {
337
+ const { AIPlatformInstrumentation } = await import("@traceloop/instrumentation-vertexai");
338
+ const aiplatformInstrumentation = new AIPlatformInstrumentation({
339
+ exceptionLogger,
340
+ });
341
+ instrumentations.push(aiplatformInstrumentation);
342
+ aiplatformInstrumentation.manuallyInstrument(module);
343
+ return aiplatformInstrumentation;
344
+ },
345
+ },
346
+ {
347
+ name: "bedrock",
348
+ description: "AWS Bedrock instrumentation",
349
+ moduleKey: "bedrock",
350
+ initFunction: async (module) => {
351
+ const { BedrockInstrumentation } = await import("@traceloop/instrumentation-bedrock");
352
+ bedrockInstrumentation = new BedrockInstrumentation({
353
+ exceptionLogger,
354
+ });
355
+ instrumentations.push(bedrockInstrumentation);
356
+ bedrockInstrumentation.manuallyInstrument(module);
357
+ return bedrockInstrumentation;
358
+ },
359
+ },
360
+ {
361
+ name: "pinecone",
362
+ description: "Pinecone vector database instrumentation",
363
+ moduleKey: "pinecone",
364
+ initFunction: async (module) => {
365
+ const { PineconeInstrumentation } = await import("@traceloop/instrumentation-pinecone");
366
+ pineconeInstrumentation = new PineconeInstrumentation({
367
+ exceptionLogger,
368
+ });
369
+ instrumentations.push(pineconeInstrumentation);
370
+ pineconeInstrumentation.manuallyInstrument(module);
371
+ return pineconeInstrumentation;
372
+ },
373
+ },
374
+ {
375
+ name: "langChain",
376
+ description: "LangChain framework instrumentation",
377
+ moduleKey: "langChain",
378
+ initFunction: async (module) => {
379
+ const { LangChainInstrumentation } = await import("@traceloop/instrumentation-langchain");
380
+ langchainInstrumentation = new LangChainInstrumentation({
381
+ exceptionLogger,
382
+ });
383
+ instrumentations.push(langchainInstrumentation);
384
+ langchainInstrumentation.manuallyInstrument(module);
385
+ return langchainInstrumentation;
386
+ },
387
+ },
388
+ {
389
+ name: "llamaIndex",
390
+ description: "LlamaIndex framework instrumentation",
391
+ moduleKey: "llamaIndex",
392
+ initFunction: async (module) => {
393
+ const { LlamaIndexInstrumentation } = await import("@traceloop/instrumentation-llamaindex");
394
+ llamaIndexInstrumentation = new LlamaIndexInstrumentation({
395
+ exceptionLogger,
396
+ });
397
+ instrumentations.push(llamaIndexInstrumentation);
398
+ llamaIndexInstrumentation.manuallyInstrument(module);
399
+ return llamaIndexInstrumentation;
400
+ },
401
+ },
402
+ {
403
+ name: "chromaDB",
404
+ description: "ChromaDB vector database instrumentation",
405
+ moduleKey: "chromaDB",
406
+ initFunction: async (module) => {
407
+ const { ChromaDBInstrumentation } = await import("@traceloop/instrumentation-chromadb");
408
+ chromadbInstrumentation = new ChromaDBInstrumentation({
409
+ exceptionLogger,
410
+ });
411
+ instrumentations.push(chromadbInstrumentation);
412
+ chromadbInstrumentation.manuallyInstrument(module);
413
+ return chromadbInstrumentation;
414
+ },
415
+ },
416
+ {
417
+ name: "qdrant",
418
+ description: "Qdrant vector database instrumentation",
419
+ moduleKey: "qdrant",
420
+ initFunction: async (module) => {
421
+ const { QdrantInstrumentation } = await import("@traceloop/instrumentation-qdrant");
422
+ qdrantInstrumentation = new QdrantInstrumentation({ exceptionLogger });
423
+ instrumentations.push(qdrantInstrumentation);
424
+ qdrantInstrumentation.manuallyInstrument(module);
425
+ return qdrantInstrumentation;
426
+ },
427
+ },
428
+ {
429
+ name: "together",
430
+ description: "Together AI instrumentation",
431
+ moduleKey: "together",
432
+ initFunction: async (module) => {
433
+ const { TogetherInstrumentation } = await import("@traceloop/instrumentation-together");
434
+ togetherInstrumentation = new TogetherInstrumentation({
435
+ exceptionLogger,
436
+ });
437
+ instrumentations.push(togetherInstrumentation);
438
+ togetherInstrumentation.manuallyInstrument(module);
439
+ return togetherInstrumentation;
440
+ },
441
+ },
442
+ ];
443
+ // Keep track of processed module keys
444
+ const processedModuleKeys = new Set();
445
+ // Process each pre-defined instrumentation
446
+ for (const { name, description, moduleKey, initFunction, } of manualInstrumentationConfigs) {
447
+ const module = instrumentModules[moduleKey];
448
+ processedModuleKeys.add(moduleKey);
449
+ if (disabledInstrumentations.includes(name)) {
450
+ loadingResults.push({ name, status: "disabled", description });
451
+ console.debug(`[Respan Debug] Skipping ${description} (disabled by configuration)`);
452
+ continue;
453
+ }
454
+ if (!module) {
455
+ loadingResults.push({ name, status: "not-provided", description });
456
+ console.debug(`[Respan Debug] No module provided for ${description}`);
457
+ continue;
458
+ }
459
+ try {
460
+ console.debug(`[Respan Debug] Attempting to manually initialize ${description}...`);
461
+ await initFunction(module);
462
+ loadingResults.push({ name, status: "success", description });
463
+ console.debug(`[Respan Debug] Successfully initialized ${description}`);
464
+ }
465
+ catch (error) {
466
+ loadingResults.push({ name, status: "failed", description, error });
467
+ // Provide installation instructions for failed instrumentations (always show for manual instrumentation)
468
+ const info = INSTRUMENTATION_INFO[name];
469
+ if (info) {
470
+ console.info(`[Respan] ${description} failed to initialize. Make sure you have the required package installed:\n ${info.installCommand}`);
471
+ }
472
+ console.debug(`[Respan Debug] Failed to initialize ${description}:`, error);
473
+ }
474
+ }
475
+ // Process any additional modules not in our pre-defined list
476
+ for (const [moduleKey, module] of Object.entries(instrumentModules)) {
477
+ if (processedModuleKeys.has(moduleKey) || !module) {
478
+ continue; // Skip already processed or null modules
479
+ }
480
+ const customName = moduleKey; // Use the actual module key name
481
+ const customDescription = `Custom ${moduleKey} instrumentation`;
482
+ console.debug(`[Respan Debug] Found custom module: ${moduleKey}, attempting generic instrumentation...`);
483
+ try {
484
+ // Generic approach: try to call manuallyInstrument if it exists
485
+ if (typeof module.manuallyInstrument === "function") {
486
+ console.debug(`[Respan Debug] Attempting generic manual instrumentation for ${customDescription}...`);
487
+ module.manuallyInstrument(module);
488
+ loadingResults.push({
489
+ name: customName,
490
+ status: "success",
491
+ description: customDescription,
492
+ });
493
+ console.debug(`[Respan Debug] Successfully initialized ${customDescription}`);
494
+ }
495
+ else {
496
+ // Check if it's a valid instrumentation instance (has required OpenTelemetry methods)
497
+ if (typeof module.setTracerProvider === "function" &&
498
+ typeof module.getConfig === "function") {
499
+ console.debug(`[Respan Debug] Module ${moduleKey} appears to be an instrumentation instance, adding it...`);
500
+ instrumentations.push(module);
501
+ loadingResults.push({
502
+ name: customName,
503
+ status: "success",
504
+ description: customDescription,
505
+ });
506
+ console.debug(`[Respan Debug] Successfully added ${customDescription} as instrumentation instance`);
507
+ }
508
+ else {
509
+ // Not a valid instrumentation, skip it with a helpful message
510
+ console.debug(`[Respan Debug] Module ${moduleKey} is not a valid OpenTelemetry instrumentation (missing required methods)`);
511
+ loadingResults.push({
512
+ name: customName,
513
+ status: "failed",
514
+ description: customDescription,
515
+ error: "Not a valid instrumentation",
516
+ });
517
+ console.info(`[Respan] Custom module '${moduleKey}' is not a valid OpenTelemetry instrumentation. It should either have a manuallyInstrument() method or be an Instrumentation instance.`);
518
+ }
519
+ }
520
+ }
521
+ catch (error) {
522
+ loadingResults.push({
523
+ name: customName,
524
+ status: "failed",
525
+ description: customDescription,
526
+ error,
527
+ });
528
+ console.info(`[Respan] Failed to initialize custom module '${moduleKey}'. Make sure it's a valid OpenTelemetry instrumentation.`);
529
+ console.debug(`[Respan Debug] Failed to initialize ${customDescription}:`, error);
530
+ }
531
+ }
532
+ // Print summary
533
+ const successful = loadingResults.filter((r) => r.status === "success");
534
+ const failed = loadingResults.filter((r) => r.status === "failed");
535
+ const disabled = loadingResults.filter((r) => r.status === "disabled");
536
+ const notProvided = loadingResults.filter((r) => r.status === "not-provided");
537
+ console.info(`[Respan] Manual instrumentation complete: ${successful.length} initialized, ${failed.length} failed, ${disabled.length} disabled, ${notProvided.length} not provided`);
538
+ if (successful.length > 0) {
539
+ console.info(`[Respan] Successfully initialized: ${successful
540
+ .map((r) => r.name)
541
+ .join(", ")}`);
542
+ }
543
+ if (disabled.length > 0) {
544
+ console.info(`[Respan] Disabled instrumentations: ${disabled
545
+ .map((r) => r.name)
546
+ .join(", ")}`);
547
+ }
548
+ if (failed.length > 0) {
549
+ console.debug(`[Respan Debug] Failed to initialize: ${failed
550
+ .map((r) => r.name)
551
+ .join(", ")}`);
552
+ }
553
+ };
554
+ /**
555
+ * Add an instrumentation to the collection
556
+ */
557
+ export const enableInstrumentation = async (name) => {
558
+ const instrumentation = await loadInstrumentation(name);
559
+ if (instrumentation) {
560
+ instrumentations.push(instrumentation);
561
+ console.log(`Enabled ${name} instrumentation`);
562
+ }
563
+ };
564
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/instrumentation/manager.ts"],"names":[],"mappings":"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"}