autotel 3.6.0 → 4.0.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 (617) hide show
  1. package/dist/attribute-redacting-processor-DtTS9xxh.d.cts +175 -0
  2. package/dist/attribute-redacting-processor-DtTS9xxh.d.cts.map +1 -0
  3. package/dist/attribute-redacting-processor-DtTS9xxh.d.ts +175 -0
  4. package/dist/attribute-redacting-processor-DtTS9xxh.d.ts.map +1 -0
  5. package/dist/attribute-redacting-processor.cjs +374 -33
  6. package/dist/attribute-redacting-processor.cjs.map +1 -1
  7. package/dist/attribute-redacting-processor.d.cts +2 -207
  8. package/dist/attribute-redacting-processor.d.ts +2 -207
  9. package/dist/attribute-redacting-processor.js +368 -2
  10. package/dist/attribute-redacting-processor.js.map +1 -1
  11. package/dist/attributes-CmYpdqCN.js +591 -0
  12. package/dist/attributes-CmYpdqCN.js.map +1 -0
  13. package/dist/attributes-PZ5doLgw.cjs +704 -0
  14. package/dist/attributes-PZ5doLgw.cjs.map +1 -0
  15. package/dist/attributes.cjs +21 -85
  16. package/dist/attributes.d.cts +2 -20
  17. package/dist/attributes.d.ts +2 -20
  18. package/dist/attributes.js +3 -5
  19. package/dist/auto.cjs +50 -28
  20. package/dist/auto.cjs.map +1 -1
  21. package/dist/auto.d.cts +1 -2
  22. package/dist/auto.d.ts +1 -2
  23. package/dist/auto.js +49 -23
  24. package/dist/auto.js.map +1 -1
  25. package/dist/business-baggage.cjs +357 -13
  26. package/dist/business-baggage.cjs.map +1 -1
  27. package/dist/business-baggage.d.cts +106 -139
  28. package/dist/business-baggage.d.cts.map +1 -0
  29. package/dist/business-baggage.d.ts +106 -139
  30. package/dist/business-baggage.d.ts.map +1 -0
  31. package/dist/business-baggage.js +357 -2
  32. package/dist/business-baggage.js.map +1 -1
  33. package/dist/canonical-log-line-processor--RlFDHhm.cjs +377 -0
  34. package/dist/canonical-log-line-processor--RlFDHhm.cjs.map +1 -0
  35. package/dist/canonical-log-line-processor-BcRuAdRk.d.ts +147 -0
  36. package/dist/canonical-log-line-processor-BcRuAdRk.d.ts.map +1 -0
  37. package/dist/canonical-log-line-processor-DbBQT5vY.js +366 -0
  38. package/dist/canonical-log-line-processor-DbBQT5vY.js.map +1 -0
  39. package/dist/canonical-log-line-processor-xvjMgtpF.d.cts +147 -0
  40. package/dist/canonical-log-line-processor-xvjMgtpF.d.cts.map +1 -0
  41. package/dist/config.cjs +118 -22
  42. package/dist/config.cjs.map +1 -1
  43. package/dist/config.d.cts +33 -45
  44. package/dist/config.d.cts.map +1 -0
  45. package/dist/config.d.ts +33 -45
  46. package/dist/config.d.ts.map +1 -0
  47. package/dist/config.js +116 -3
  48. package/dist/config.js.map +1 -1
  49. package/dist/correlated-events-Bzh5y-UB.js +28 -0
  50. package/dist/correlated-events-Bzh5y-UB.js.map +1 -0
  51. package/dist/correlated-events-kSwLo3mi.cjs +34 -0
  52. package/dist/correlated-events-kSwLo3mi.cjs.map +1 -0
  53. package/dist/correlation-id.cjs +11 -54
  54. package/dist/correlation-id.d.cts +6 -5
  55. package/dist/correlation-id.d.cts.map +1 -0
  56. package/dist/correlation-id.d.ts +6 -5
  57. package/dist/correlation-id.d.ts.map +1 -0
  58. package/dist/correlation-id.js +3 -17
  59. package/dist/db.cjs +244 -209
  60. package/dist/db.cjs.map +1 -1
  61. package/dist/db.d.cts +28 -26
  62. package/dist/db.d.cts.map +1 -0
  63. package/dist/db.d.ts +28 -26
  64. package/dist/db.d.ts.map +1 -0
  65. package/dist/db.js +243 -207
  66. package/dist/db.js.map +1 -1
  67. package/dist/decorators.cjs +39 -66
  68. package/dist/decorators.cjs.map +1 -1
  69. package/dist/decorators.d.cts +10 -37
  70. package/dist/decorators.d.cts.map +1 -0
  71. package/dist/decorators.d.ts +10 -37
  72. package/dist/decorators.d.ts.map +1 -0
  73. package/dist/decorators.js +38 -64
  74. package/dist/decorators.js.map +1 -1
  75. package/dist/define-event-CreknLm3.d.ts +25 -0
  76. package/dist/define-event-CreknLm3.d.ts.map +1 -0
  77. package/dist/define-event-HZRizPwz.d.cts +25 -0
  78. package/dist/define-event-HZRizPwz.d.cts.map +1 -0
  79. package/dist/drain-pipeline.cjs +111 -9
  80. package/dist/drain-pipeline.cjs.map +1 -1
  81. package/dist/drain-pipeline.d.cts +27 -32
  82. package/dist/drain-pipeline.d.cts.map +1 -0
  83. package/dist/drain-pipeline.d.ts +27 -32
  84. package/dist/drain-pipeline.d.ts.map +1 -0
  85. package/dist/drain-pipeline.js +111 -2
  86. package/dist/drain-pipeline.js.map +1 -1
  87. package/dist/enrichers.cjs +59 -66
  88. package/dist/enrichers.cjs.map +1 -1
  89. package/dist/enrichers.d.cts +15 -13
  90. package/dist/enrichers.d.cts.map +1 -0
  91. package/dist/enrichers.d.ts +15 -13
  92. package/dist/enrichers.d.ts.map +1 -0
  93. package/dist/enrichers.js +58 -65
  94. package/dist/enrichers.js.map +1 -1
  95. package/dist/event-Dlqr4ZNL.cjs +778 -0
  96. package/dist/event-Dlqr4ZNL.cjs.map +1 -0
  97. package/dist/event-_58ryBjh.js +761 -0
  98. package/dist/event-_58ryBjh.js.map +1 -0
  99. package/dist/event-subscriber-D1XLkPzi.d.cts +223 -0
  100. package/dist/event-subscriber-D1XLkPzi.d.cts.map +1 -0
  101. package/dist/event-subscriber-D1XLkPzi.d.ts +223 -0
  102. package/dist/event-subscriber-D1XLkPzi.d.ts.map +1 -0
  103. package/dist/event-subscriber.cjs +0 -6
  104. package/dist/event-subscriber.d.cts +2 -221
  105. package/dist/event-subscriber.d.ts +2 -221
  106. package/dist/event-subscriber.js +1 -3
  107. package/dist/event-testing-BqRnI0z4.d.cts +106 -0
  108. package/dist/event-testing-BqRnI0z4.d.cts.map +1 -0
  109. package/dist/event-testing-CfFs3to2.d.ts +106 -0
  110. package/dist/event-testing-CfFs3to2.d.ts.map +1 -0
  111. package/dist/event-testing.cjs +93 -17
  112. package/dist/event-testing.cjs.map +1 -1
  113. package/dist/event-testing.d.cts +2 -110
  114. package/dist/event-testing.d.ts +2 -110
  115. package/dist/event-testing.js +91 -2
  116. package/dist/event-testing.js.map +1 -1
  117. package/dist/event.cjs +5 -37
  118. package/dist/event.d.cts +295 -340
  119. package/dist/event.d.cts.map +1 -0
  120. package/dist/event.d.ts +295 -340
  121. package/dist/event.d.ts.map +1 -0
  122. package/dist/event.js +3 -21
  123. package/dist/exporters.cjs +12 -16
  124. package/dist/exporters.d.cts +86 -111
  125. package/dist/exporters.d.cts.map +1 -0
  126. package/dist/exporters.d.ts +86 -111
  127. package/dist/exporters.d.ts.map +1 -0
  128. package/dist/exporters.js +4 -4
  129. package/dist/filtering-span-processor-B8R8B7Uk.d.cts +59 -0
  130. package/dist/filtering-span-processor-B8R8B7Uk.d.cts.map +1 -0
  131. package/dist/filtering-span-processor-B8R8B7Uk.d.ts +59 -0
  132. package/dist/filtering-span-processor-B8R8B7Uk.d.ts.map +1 -0
  133. package/dist/filtering-span-processor.cjs +49 -9
  134. package/dist/filtering-span-processor.cjs.map +1 -1
  135. package/dist/filtering-span-processor.d.cts +2 -80
  136. package/dist/filtering-span-processor.d.ts +2 -80
  137. package/dist/filtering-span-processor.js +49 -2
  138. package/dist/filtering-span-processor.js.map +1 -1
  139. package/dist/functional-BGkT8J-h.js +1265 -0
  140. package/dist/functional-BGkT8J-h.js.map +1 -0
  141. package/dist/functional-C4CzoVrX.cjs +1312 -0
  142. package/dist/functional-C4CzoVrX.cjs.map +1 -0
  143. package/dist/functional.cjs +11 -57
  144. package/dist/functional.d.cts +96 -97
  145. package/dist/functional.d.cts.map +1 -0
  146. package/dist/functional.d.ts +96 -97
  147. package/dist/functional.d.ts.map +1 -0
  148. package/dist/functional.js +3 -20
  149. package/dist/http.cjs +276 -176
  150. package/dist/http.cjs.map +1 -1
  151. package/dist/http.d.cts +17 -37
  152. package/dist/http.d.cts.map +1 -0
  153. package/dist/http.d.ts +17 -37
  154. package/dist/http.d.ts.map +1 -0
  155. package/dist/http.js +275 -174
  156. package/dist/http.js.map +1 -1
  157. package/dist/index-Ck06vlW2.d.ts +678 -0
  158. package/dist/index-Ck06vlW2.d.ts.map +1 -0
  159. package/dist/index-eKuioqT1.d.cts +678 -0
  160. package/dist/index-eKuioqT1.d.cts.map +1 -0
  161. package/dist/index.cjs +751 -1218
  162. package/dist/index.cjs.map +1 -1
  163. package/dist/index.d.cts +341 -659
  164. package/dist/index.d.cts.map +1 -0
  165. package/dist/index.d.ts +341 -659
  166. package/dist/index.d.ts.map +1 -0
  167. package/dist/index.js +606 -737
  168. package/dist/index.js.map +1 -1
  169. package/dist/init-CNp-ee80.d.cts +1157 -0
  170. package/dist/init-CNp-ee80.d.cts.map +1 -0
  171. package/dist/init-Ch6t7MNI.js +1015 -0
  172. package/dist/init-Ch6t7MNI.js.map +1 -0
  173. package/dist/init-DJQOdVlN.d.ts +1157 -0
  174. package/dist/init-DJQOdVlN.d.ts.map +1 -0
  175. package/dist/init-DvapOXCc.cjs +1092 -0
  176. package/dist/init-DvapOXCc.cjs.map +1 -0
  177. package/dist/instrumentation.cjs +159 -185
  178. package/dist/instrumentation.cjs.map +1 -1
  179. package/dist/instrumentation.d.cts +42 -40
  180. package/dist/instrumentation.d.cts.map +1 -0
  181. package/dist/instrumentation.d.ts +42 -40
  182. package/dist/instrumentation.d.ts.map +1 -0
  183. package/dist/instrumentation.js +158 -183
  184. package/dist/instrumentation.js.map +1 -1
  185. package/dist/logger-BauSUhUv.d.cts +313 -0
  186. package/dist/logger-BauSUhUv.d.cts.map +1 -0
  187. package/dist/logger-BauSUhUv.d.ts +313 -0
  188. package/dist/logger-BauSUhUv.d.ts.map +1 -0
  189. package/dist/logger.cjs +225 -25
  190. package/dist/logger.cjs.map +1 -1
  191. package/dist/logger.d.cts +2 -348
  192. package/dist/logger.d.ts +2 -348
  193. package/dist/logger.js +204 -4
  194. package/dist/logger.js.map +1 -1
  195. package/dist/messaging-adapters.cjs +292 -187
  196. package/dist/messaging-adapters.cjs.map +1 -1
  197. package/dist/messaging-adapters.d.cts +28 -66
  198. package/dist/messaging-adapters.d.cts.map +1 -0
  199. package/dist/messaging-adapters.d.ts +28 -66
  200. package/dist/messaging-adapters.d.ts.map +1 -0
  201. package/dist/messaging-adapters.js +291 -185
  202. package/dist/messaging-adapters.js.map +1 -1
  203. package/dist/messaging-testing.cjs +306 -372
  204. package/dist/messaging-testing.cjs.map +1 -1
  205. package/dist/messaging-testing.d.cts +194 -223
  206. package/dist/messaging-testing.d.cts.map +1 -0
  207. package/dist/messaging-testing.d.ts +194 -223
  208. package/dist/messaging-testing.d.ts.map +1 -0
  209. package/dist/messaging-testing.js +305 -371
  210. package/dist/messaging-testing.js.map +1 -1
  211. package/dist/messaging.cjs +757 -36
  212. package/dist/messaging.cjs.map +1 -1
  213. package/dist/messaging.d.cts +603 -644
  214. package/dist/messaging.d.cts.map +1 -0
  215. package/dist/messaging.d.ts +603 -644
  216. package/dist/messaging.d.ts.map +1 -0
  217. package/dist/messaging.js +756 -21
  218. package/dist/messaging.js.map +1 -1
  219. package/dist/metric-helpers.cjs +27 -27
  220. package/dist/metric-helpers.cjs.map +1 -1
  221. package/dist/metric-helpers.d.cts +4 -2
  222. package/dist/metric-helpers.d.cts.map +1 -0
  223. package/dist/metric-helpers.d.ts +4 -2
  224. package/dist/metric-helpers.d.ts.map +1 -0
  225. package/dist/metric-helpers.js +24 -4
  226. package/dist/metric-helpers.js.map +1 -1
  227. package/dist/metric-testing-DXdK3-Q3.d.ts +106 -0
  228. package/dist/metric-testing-DXdK3-Q3.d.ts.map +1 -0
  229. package/dist/metric-testing-MxvzChDp.d.cts +106 -0
  230. package/dist/metric-testing-MxvzChDp.d.cts.map +1 -0
  231. package/dist/metric-testing.cjs +93 -17
  232. package/dist/metric-testing.cjs.map +1 -1
  233. package/dist/metric-testing.d.cts +2 -110
  234. package/dist/metric-testing.d.ts +2 -110
  235. package/dist/metric-testing.js +91 -2
  236. package/dist/metric-testing.js.map +1 -1
  237. package/dist/metric.cjs +306 -22
  238. package/dist/metric.cjs.map +1 -1
  239. package/dist/metric.d.cts +170 -198
  240. package/dist/metric.d.cts.map +1 -0
  241. package/dist/metric.d.ts +170 -198
  242. package/dist/metric.d.ts.map +1 -0
  243. package/dist/metric.js +277 -7
  244. package/dist/metric.js.map +1 -1
  245. package/dist/node-require-DF5QBX6z.cjs +99 -0
  246. package/dist/node-require-DF5QBX6z.cjs.map +1 -0
  247. package/dist/node-require-Db1oDpLj.js +88 -0
  248. package/dist/node-require-Db1oDpLj.js.map +1 -0
  249. package/dist/operation-context-C-2hmmtP.js +59 -0
  250. package/dist/operation-context-C-2hmmtP.js.map +1 -0
  251. package/dist/operation-context-n4_obUwq.cjs +70 -0
  252. package/dist/operation-context-n4_obUwq.cjs.map +1 -0
  253. package/dist/parse-error.cjs +55 -9
  254. package/dist/parse-error.cjs.map +1 -1
  255. package/dist/parse-error.d.cts +12 -10
  256. package/dist/parse-error.d.cts.map +1 -0
  257. package/dist/parse-error.d.ts +12 -10
  258. package/dist/parse-error.d.ts.map +1 -0
  259. package/dist/parse-error.js +55 -2
  260. package/dist/parse-error.js.map +1 -1
  261. package/dist/pretty-console-exporter-CMzlrRNg.cjs +232 -0
  262. package/dist/pretty-console-exporter-CMzlrRNg.cjs.map +1 -0
  263. package/dist/pretty-console-exporter-DqKl_q9z.js +227 -0
  264. package/dist/pretty-console-exporter-DqKl_q9z.js.map +1 -0
  265. package/dist/processors.cjs +13 -17
  266. package/dist/processors.d.cts +3 -171
  267. package/dist/processors.d.ts +3 -171
  268. package/dist/processors.js +4 -4
  269. package/dist/register.cjs +35 -6
  270. package/dist/register.cjs.map +1 -1
  271. package/dist/register.d.cts +1 -2
  272. package/dist/register.d.ts +1 -2
  273. package/dist/register.js +36 -3
  274. package/dist/register.js.map +1 -1
  275. package/dist/registry-DVSmWg6Y.js +175 -0
  276. package/dist/registry-DVSmWg6Y.js.map +1 -0
  277. package/dist/registry-DYgvb62e.cjs +319 -0
  278. package/dist/registry-DYgvb62e.cjs.map +1 -0
  279. package/dist/sampling-CR0Va1VB.d.ts +351 -0
  280. package/dist/sampling-CR0Va1VB.d.ts.map +1 -0
  281. package/dist/sampling-DfYhDJij.d.cts +351 -0
  282. package/dist/sampling-DfYhDJij.d.cts.map +1 -0
  283. package/dist/sampling.cjs +452 -60
  284. package/dist/sampling.cjs.map +1 -1
  285. package/dist/sampling.d.cts +2 -379
  286. package/dist/sampling.d.ts +2 -379
  287. package/dist/sampling.js +441 -5
  288. package/dist/sampling.js.map +1 -1
  289. package/dist/security-schema.cjs +65 -46
  290. package/dist/security-schema.cjs.map +1 -1
  291. package/dist/security-schema.d.cts +23 -26
  292. package/dist/security-schema.d.cts.map +1 -0
  293. package/dist/security-schema.d.ts +23 -26
  294. package/dist/security-schema.d.ts.map +1 -0
  295. package/dist/security-schema.js +64 -45
  296. package/dist/security-schema.js.map +1 -1
  297. package/dist/semantic-conventions-FhSxv-bK.d.cts +32 -0
  298. package/dist/semantic-conventions-FhSxv-bK.d.cts.map +1 -0
  299. package/dist/semantic-conventions-FhSxv-bK.d.ts +32 -0
  300. package/dist/semantic-conventions-FhSxv-bK.d.ts.map +1 -0
  301. package/dist/semantic-conventions.cjs +15 -26
  302. package/dist/semantic-conventions.cjs.map +1 -1
  303. package/dist/semantic-conventions.d.cts +2 -29
  304. package/dist/semantic-conventions.d.ts +2 -29
  305. package/dist/semantic-conventions.js +12 -3
  306. package/dist/semantic-conventions.js.map +1 -1
  307. package/dist/semantic-helpers.cjs +327 -39
  308. package/dist/semantic-helpers.cjs.map +1 -1
  309. package/dist/semantic-helpers.d.cts +30 -150
  310. package/dist/semantic-helpers.d.cts.map +1 -0
  311. package/dist/semantic-helpers.d.ts +30 -150
  312. package/dist/semantic-helpers.d.ts.map +1 -0
  313. package/dist/semantic-helpers.js +326 -20
  314. package/dist/semantic-helpers.js.map +1 -1
  315. package/dist/span-name-normalizer-8ZOGJuwv.d.cts +70 -0
  316. package/dist/span-name-normalizer-8ZOGJuwv.d.cts.map +1 -0
  317. package/dist/span-name-normalizer-8ZOGJuwv.d.ts +70 -0
  318. package/dist/span-name-normalizer-8ZOGJuwv.d.ts.map +1 -0
  319. package/dist/span-name-normalizer.cjs +95 -17
  320. package/dist/span-name-normalizer.cjs.map +1 -1
  321. package/dist/span-name-normalizer.d.cts +2 -94
  322. package/dist/span-name-normalizer.d.ts +2 -94
  323. package/dist/span-name-normalizer.js +93 -2
  324. package/dist/span-name-normalizer.js.map +1 -1
  325. package/dist/stable-hash-BNTMrmdB.cjs +28 -0
  326. package/dist/stable-hash-BNTMrmdB.cjs.map +1 -0
  327. package/dist/stable-hash-Cg5cT34Q.js +23 -0
  328. package/dist/stable-hash-Cg5cT34Q.js.map +1 -0
  329. package/dist/structured-error-9--cxBay.js +143 -0
  330. package/dist/structured-error-9--cxBay.js.map +1 -0
  331. package/dist/structured-error-CHg7DoIQ.cjs +178 -0
  332. package/dist/structured-error-CHg7DoIQ.cjs.map +1 -0
  333. package/dist/tail-sampling-processor.cjs +26 -13
  334. package/dist/tail-sampling-processor.cjs.map +1 -1
  335. package/dist/tail-sampling-processor.d.cts +11 -23
  336. package/dist/tail-sampling-processor.d.cts.map +1 -0
  337. package/dist/tail-sampling-processor.d.ts +11 -23
  338. package/dist/tail-sampling-processor.d.ts.map +1 -0
  339. package/dist/tail-sampling-processor.js +27 -6
  340. package/dist/tail-sampling-processor.js.map +1 -1
  341. package/dist/test-span-collector.cjs +70 -72
  342. package/dist/test-span-collector.cjs.map +1 -1
  343. package/dist/test-span-collector.d.cts +25 -43
  344. package/dist/test-span-collector.d.cts.map +1 -0
  345. package/dist/test-span-collector.d.ts +25 -43
  346. package/dist/test-span-collector.d.ts.map +1 -0
  347. package/dist/test-span-collector.js +69 -70
  348. package/dist/test-span-collector.js.map +1 -1
  349. package/dist/testing.cjs +389 -278
  350. package/dist/testing.cjs.map +1 -1
  351. package/dist/testing.d.cts +39 -62
  352. package/dist/testing.d.cts.map +1 -0
  353. package/dist/testing.d.ts +39 -62
  354. package/dist/testing.d.ts.map +1 -0
  355. package/dist/testing.js +386 -265
  356. package/dist/testing.js.map +1 -1
  357. package/dist/trace-context-Cijqoi6e.d.cts +212 -0
  358. package/dist/trace-context-Cijqoi6e.d.cts.map +1 -0
  359. package/dist/trace-context-Cijqoi6e.d.ts +212 -0
  360. package/dist/trace-context-Cijqoi6e.d.ts.map +1 -0
  361. package/dist/trace-helpers.cjs +634 -54
  362. package/dist/trace-helpers.cjs.map +1 -1
  363. package/dist/trace-helpers.d.cts +17 -49
  364. package/dist/trace-helpers.d.cts.map +1 -0
  365. package/dist/trace-helpers.d.ts +17 -49
  366. package/dist/trace-helpers.d.ts.map +1 -0
  367. package/dist/trace-helpers.js +624 -3
  368. package/dist/trace-helpers.js.map +1 -1
  369. package/dist/tracer-provider.cjs +227 -16
  370. package/dist/tracer-provider.cjs.map +1 -1
  371. package/dist/tracer-provider.d.cts +5 -4
  372. package/dist/tracer-provider.d.cts.map +1 -0
  373. package/dist/tracer-provider.d.ts +5 -4
  374. package/dist/tracer-provider.d.ts.map +1 -0
  375. package/dist/tracer-provider.js +227 -2
  376. package/dist/tracer-provider.js.map +1 -1
  377. package/dist/track-3HY4NGV-.cjs +1212 -0
  378. package/dist/track-3HY4NGV-.cjs.map +1 -0
  379. package/dist/track-nsKVy-pj.js +1111 -0
  380. package/dist/track-nsKVy-pj.js.map +1 -0
  381. package/dist/validate.cjs +178 -115
  382. package/dist/validate.cjs.map +1 -1
  383. package/dist/validate.d.cts +40 -64
  384. package/dist/validate.d.cts.map +1 -0
  385. package/dist/validate.d.ts +40 -64
  386. package/dist/validate.d.ts.map +1 -0
  387. package/dist/validate.js +177 -113
  388. package/dist/validate.js.map +1 -1
  389. package/dist/validation-attributes.cjs +42 -17
  390. package/dist/validation-attributes.cjs.map +1 -1
  391. package/dist/validation-attributes.d.cts +13 -20
  392. package/dist/validation-attributes.d.cts.map +1 -0
  393. package/dist/validation-attributes.d.ts +13 -20
  394. package/dist/validation-attributes.d.ts.map +1 -0
  395. package/dist/validation-attributes.js +40 -2
  396. package/dist/validation-attributes.js.map +1 -1
  397. package/dist/webhook.cjs +286 -256
  398. package/dist/webhook.cjs.map +1 -1
  399. package/dist/webhook.d.cts +157 -192
  400. package/dist/webhook.d.cts.map +1 -0
  401. package/dist/webhook.d.ts +157 -192
  402. package/dist/webhook.d.ts.map +1 -0
  403. package/dist/webhook.js +285 -254
  404. package/dist/webhook.js.map +1 -1
  405. package/dist/workflow-distributed.cjs +498 -412
  406. package/dist/workflow-distributed.cjs.map +1 -1
  407. package/dist/workflow-distributed.d.cts +163 -173
  408. package/dist/workflow-distributed.d.cts.map +1 -0
  409. package/dist/workflow-distributed.d.ts +163 -173
  410. package/dist/workflow-distributed.d.ts.map +1 -0
  411. package/dist/workflow-distributed.js +497 -410
  412. package/dist/workflow-distributed.js.map +1 -1
  413. package/dist/workflow.cjs +405 -40
  414. package/dist/workflow.cjs.map +1 -1
  415. package/dist/workflow.d.cts +78 -131
  416. package/dist/workflow.d.cts.map +1 -0
  417. package/dist/workflow.d.ts +78 -131
  418. package/dist/workflow.d.ts.map +1 -0
  419. package/dist/workflow.js +403 -21
  420. package/dist/workflow.js.map +1 -1
  421. package/dist/yaml-config-B3dQ82GR.cjs +272 -0
  422. package/dist/yaml-config-B3dQ82GR.cjs.map +1 -0
  423. package/dist/yaml-config.cjs +5 -24
  424. package/dist/yaml-config.d.cts +30 -64
  425. package/dist/yaml-config.d.cts.map +1 -0
  426. package/dist/yaml-config.d.ts +30 -64
  427. package/dist/yaml-config.d.ts.map +1 -0
  428. package/dist/yaml-config.js +226 -7
  429. package/dist/yaml-config.js.map +1 -1
  430. package/package.json +4 -4
  431. package/skills/analyze-traces/SKILL.md +14 -12
  432. package/skills/review-otel-patterns/SKILL.md +4 -2
  433. package/skills/tune-sampling/SKILL.md +8 -3
  434. package/src/attributes/builders.ts +2 -20
  435. package/src/attributes/index.ts +0 -1
  436. package/src/attributes/registry.ts +2 -9
  437. package/src/attributes/types.ts +0 -8
  438. package/src/index.ts +7 -41
  439. package/src/request-logger.test.ts +53 -1
  440. package/src/request-logger.ts +58 -0
  441. package/src/semantic-helpers.test.ts +2 -87
  442. package/src/semantic-helpers.ts +0 -146
  443. package/src/validate.test.ts +3 -1
  444. package/src/validate.ts +9 -3
  445. package/dist/attributes.cjs.map +0 -1
  446. package/dist/attributes.js.map +0 -1
  447. package/dist/chunk-2ZKEORFN.cjs +0 -14
  448. package/dist/chunk-2ZKEORFN.cjs.map +0 -1
  449. package/dist/chunk-3QXBFGKP.js +0 -344
  450. package/dist/chunk-3QXBFGKP.js.map +0 -1
  451. package/dist/chunk-454CH4OV.js +0 -744
  452. package/dist/chunk-454CH4OV.js.map +0 -1
  453. package/dist/chunk-4A53YIAX.js +0 -180
  454. package/dist/chunk-4A53YIAX.js.map +0 -1
  455. package/dist/chunk-4IFSYQVX.js +0 -337
  456. package/dist/chunk-4IFSYQVX.js.map +0 -1
  457. package/dist/chunk-4P6ZOARG.cjs +0 -33
  458. package/dist/chunk-4P6ZOARG.cjs.map +0 -1
  459. package/dist/chunk-55ER2KD5.js +0 -228
  460. package/dist/chunk-55ER2KD5.js.map +0 -1
  461. package/dist/chunk-5ZN622AO.js +0 -73
  462. package/dist/chunk-5ZN622AO.js.map +0 -1
  463. package/dist/chunk-66YJ66GG.js +0 -1021
  464. package/dist/chunk-66YJ66GG.js.map +0 -1
  465. package/dist/chunk-6S5RUKU3.cjs +0 -347
  466. package/dist/chunk-6S5RUKU3.cjs.map +0 -1
  467. package/dist/chunk-6UQRVUN3.js +0 -222
  468. package/dist/chunk-6UQRVUN3.js.map +0 -1
  469. package/dist/chunk-7552UTQW.js +0 -11
  470. package/dist/chunk-7552UTQW.js.map +0 -1
  471. package/dist/chunk-7EQ4G4SI.cjs +0 -146
  472. package/dist/chunk-7EQ4G4SI.cjs.map +0 -1
  473. package/dist/chunk-7SAWIN74.js +0 -285
  474. package/dist/chunk-7SAWIN74.js.map +0 -1
  475. package/dist/chunk-A4E5AQFK.js +0 -30
  476. package/dist/chunk-A4E5AQFK.js.map +0 -1
  477. package/dist/chunk-ALPYR2GC.js +0 -1061
  478. package/dist/chunk-ALPYR2GC.js.map +0 -1
  479. package/dist/chunk-B7SWBE4P.cjs +0 -799
  480. package/dist/chunk-B7SWBE4P.cjs.map +0 -1
  481. package/dist/chunk-BZHG5IZ4.js +0 -73
  482. package/dist/chunk-BZHG5IZ4.js.map +0 -1
  483. package/dist/chunk-CEAQK2QY.cjs +0 -32
  484. package/dist/chunk-CEAQK2QY.cjs.map +0 -1
  485. package/dist/chunk-CMHVQR6P.js +0 -170
  486. package/dist/chunk-CMHVQR6P.js.map +0 -1
  487. package/dist/chunk-CU6IDACR.cjs +0 -224
  488. package/dist/chunk-CU6IDACR.cjs.map +0 -1
  489. package/dist/chunk-D4TM63S3.js +0 -795
  490. package/dist/chunk-D4TM63S3.js.map +0 -1
  491. package/dist/chunk-DCEDJQGG.js +0 -28
  492. package/dist/chunk-DCEDJQGG.js.map +0 -1
  493. package/dist/chunk-DPSA4QLA.js +0 -344
  494. package/dist/chunk-DPSA4QLA.js.map +0 -1
  495. package/dist/chunk-E6TERL5O.cjs +0 -23
  496. package/dist/chunk-E6TERL5O.cjs.map +0 -1
  497. package/dist/chunk-EE6CPXKH.cjs +0 -164
  498. package/dist/chunk-EE6CPXKH.cjs.map +0 -1
  499. package/dist/chunk-EOFB7XCL.cjs +0 -837
  500. package/dist/chunk-EOFB7XCL.cjs.map +0 -1
  501. package/dist/chunk-ESLWRGAG.cjs +0 -92
  502. package/dist/chunk-ESLWRGAG.cjs.map +0 -1
  503. package/dist/chunk-ESMHTKLJ.cjs +0 -206
  504. package/dist/chunk-ESMHTKLJ.cjs.map +0 -1
  505. package/dist/chunk-FMTHVSYY.cjs +0 -1039
  506. package/dist/chunk-FMTHVSYY.cjs.map +0 -1
  507. package/dist/chunk-FU6R566Y.cjs +0 -236
  508. package/dist/chunk-FU6R566Y.cjs.map +0 -1
  509. package/dist/chunk-GYR5K654.js +0 -91
  510. package/dist/chunk-GYR5K654.js.map +0 -1
  511. package/dist/chunk-HA2WBOGQ.js +0 -57
  512. package/dist/chunk-HA2WBOGQ.js.map +0 -1
  513. package/dist/chunk-HT5JQKN2.js +0 -118
  514. package/dist/chunk-HT5JQKN2.js.map +0 -1
  515. package/dist/chunk-INJD3G4K.cjs +0 -340
  516. package/dist/chunk-INJD3G4K.cjs.map +0 -1
  517. package/dist/chunk-IOYFAFHJ.cjs +0 -95
  518. package/dist/chunk-IOYFAFHJ.cjs.map +0 -1
  519. package/dist/chunk-J5QENANM.js +0 -87
  520. package/dist/chunk-J5QENANM.js.map +0 -1
  521. package/dist/chunk-J7VGRIAJ.js +0 -64
  522. package/dist/chunk-J7VGRIAJ.js.map +0 -1
  523. package/dist/chunk-KFOHQK7X.js +0 -144
  524. package/dist/chunk-KFOHQK7X.js.map +0 -1
  525. package/dist/chunk-KIL5CUN6.js +0 -31
  526. package/dist/chunk-KIL5CUN6.js.map +0 -1
  527. package/dist/chunk-KYXZS3EA.cjs +0 -100
  528. package/dist/chunk-KYXZS3EA.cjs.map +0 -1
  529. package/dist/chunk-LITNXTTT.js +0 -3
  530. package/dist/chunk-LITNXTTT.js.map +0 -1
  531. package/dist/chunk-LVIPBYFE.js +0 -157
  532. package/dist/chunk-LVIPBYFE.js.map +0 -1
  533. package/dist/chunk-M3LFHHTN.cjs +0 -764
  534. package/dist/chunk-M3LFHHTN.cjs.map +0 -1
  535. package/dist/chunk-N25JDZSC.js +0 -95
  536. package/dist/chunk-N25JDZSC.js.map +0 -1
  537. package/dist/chunk-NEIB3TLD.cjs +0 -360
  538. package/dist/chunk-NEIB3TLD.cjs.map +0 -1
  539. package/dist/chunk-NENU7E6V.cjs +0 -344
  540. package/dist/chunk-NENU7E6V.cjs.map +0 -1
  541. package/dist/chunk-NVAI5CCN.cjs +0 -39
  542. package/dist/chunk-NVAI5CCN.cjs.map +0 -1
  543. package/dist/chunk-NZ72VDNY.cjs +0 -4
  544. package/dist/chunk-NZ72VDNY.cjs.map +0 -1
  545. package/dist/chunk-OPPXYVEZ.cjs +0 -131
  546. package/dist/chunk-OPPXYVEZ.cjs.map +0 -1
  547. package/dist/chunk-Q4EULJQY.js +0 -35
  548. package/dist/chunk-Q4EULJQY.js.map +0 -1
  549. package/dist/chunk-QF7ARNUM.js +0 -339
  550. package/dist/chunk-QF7ARNUM.js.map +0 -1
  551. package/dist/chunk-QWW3E3JM.cjs +0 -178
  552. package/dist/chunk-QWW3E3JM.cjs.map +0 -1
  553. package/dist/chunk-R7QYGZUP.cjs +0 -1075
  554. package/dist/chunk-R7QYGZUP.cjs.map +0 -1
  555. package/dist/chunk-RUPKBKUF.js +0 -352
  556. package/dist/chunk-RUPKBKUF.js.map +0 -1
  557. package/dist/chunk-SEO6NAQT.js +0 -14
  558. package/dist/chunk-SEO6NAQT.js.map +0 -1
  559. package/dist/chunk-T4B5LB6E.cjs +0 -66
  560. package/dist/chunk-T4B5LB6E.cjs.map +0 -1
  561. package/dist/chunk-T5WRA76K.cjs +0 -32
  562. package/dist/chunk-T5WRA76K.cjs.map +0 -1
  563. package/dist/chunk-T7JO2TCP.js +0 -1233
  564. package/dist/chunk-T7JO2TCP.js.map +0 -1
  565. package/dist/chunk-TC5ZPWM4.cjs +0 -289
  566. package/dist/chunk-TC5ZPWM4.cjs.map +0 -1
  567. package/dist/chunk-TQ5UWA7S.js +0 -26
  568. package/dist/chunk-TQ5UWA7S.js.map +0 -1
  569. package/dist/chunk-UIKYE2QZ.js +0 -833
  570. package/dist/chunk-UIKYE2QZ.js.map +0 -1
  571. package/dist/chunk-UNPLAVE7.js +0 -21
  572. package/dist/chunk-UNPLAVE7.js.map +0 -1
  573. package/dist/chunk-UY3UYPBZ.cjs +0 -77
  574. package/dist/chunk-UY3UYPBZ.cjs.map +0 -1
  575. package/dist/chunk-V7UBMJAB.cjs +0 -1242
  576. package/dist/chunk-V7UBMJAB.cjs.map +0 -1
  577. package/dist/chunk-VH77IPJN.cjs +0 -358
  578. package/dist/chunk-VH77IPJN.cjs.map +0 -1
  579. package/dist/chunk-VQTCQKHQ.cjs +0 -17
  580. package/dist/chunk-VQTCQKHQ.cjs.map +0 -1
  581. package/dist/chunk-WGWSHJ2N.js +0 -38
  582. package/dist/chunk-WGWSHJ2N.js.map +0 -1
  583. package/dist/chunk-WJH6IYU2.cjs +0 -32
  584. package/dist/chunk-WJH6IYU2.cjs.map +0 -1
  585. package/dist/chunk-YREV3LGG.cjs +0 -61
  586. package/dist/chunk-YREV3LGG.cjs.map +0 -1
  587. package/dist/chunk-YTXEZ4SD.cjs +0 -77
  588. package/dist/chunk-YTXEZ4SD.cjs.map +0 -1
  589. package/dist/chunk-ZNMBW67B.cjs +0 -40
  590. package/dist/chunk-ZNMBW67B.cjs.map +0 -1
  591. package/dist/correlation-id.cjs.map +0 -1
  592. package/dist/correlation-id.js.map +0 -1
  593. package/dist/define-event-BL6Li7CM.d.ts +0 -23
  594. package/dist/define-event-ClP3T1Jx.d.cts +0 -23
  595. package/dist/event-subscriber.cjs.map +0 -1
  596. package/dist/event-subscriber.js.map +0 -1
  597. package/dist/event.cjs.map +0 -1
  598. package/dist/event.js.map +0 -1
  599. package/dist/exporters.cjs.map +0 -1
  600. package/dist/exporters.js.map +0 -1
  601. package/dist/functional.cjs.map +0 -1
  602. package/dist/functional.js.map +0 -1
  603. package/dist/init-DIowiiCh.d.ts +0 -1167
  604. package/dist/init-j-A1zI16.d.cts +0 -1167
  605. package/dist/processors.cjs.map +0 -1
  606. package/dist/processors.js.map +0 -1
  607. package/dist/trace-context-DbGKd1Rn.d.cts +0 -213
  608. package/dist/trace-context-DbGKd1Rn.d.ts +0 -213
  609. package/dist/utils-BahBCFtJ.d.cts +0 -712
  610. package/dist/utils-CLKwaUlG.d.ts +0 -712
  611. package/dist/yaml-config.cjs.map +0 -1
  612. package/src/gen-ai-cost.test.ts +0 -81
  613. package/src/gen-ai-cost.ts +0 -145
  614. package/src/gen-ai-events.test.ts +0 -135
  615. package/src/gen-ai-events.ts +0 -208
  616. package/src/gen-ai-metrics.test.ts +0 -96
  617. package/src/gen-ai-metrics.ts +0 -128
@@ -1,1167 +0,0 @@
1
- import * as _opentelemetry_sdk_trace_base from '@opentelemetry/sdk-trace-base';
2
- import { SpanProcessor, SpanExporter } from '@opentelemetry/sdk-trace-base';
3
- import { NodeSDKConfiguration, NodeSDK } from '@opentelemetry/sdk-node';
4
- import { Resource } from '@opentelemetry/resources';
5
- import { Sampler, SamplingPreset } from './sampling.cjs';
6
- import { EventSubscriber } from './event-subscriber.cjs';
7
- import { Logger } from './logger.cjs';
8
- import { Attributes } from '@opentelemetry/api';
9
- import { MetricReader } from '@opentelemetry/sdk-metrics';
10
- import { LogRecordProcessor } from '@opentelemetry/sdk-logs';
11
- import { SpanFilterPredicate } from './filtering-span-processor.cjs';
12
- import { SpanNameNormalizerConfig } from './span-name-normalizer.cjs';
13
- import { AttributeRedactorConfig, AttributeRedactorPreset } from './attribute-redacting-processor.cjs';
14
- import { CanonicalLogLineOptions } from './processors.cjs';
15
-
16
- /**
17
- * Input validation for events events and attributes
18
- *
19
- * Prevents:
20
- * - Invalid event names
21
- * - Oversized payloads
22
- * - Circular references
23
- * - Sensitive data leaks
24
- */
25
-
26
- interface ValidationConfig {
27
- /** Max event name length (default: 100) */
28
- maxEventNameLength: number;
29
- /** Max attribute key length (default: 100) */
30
- maxAttributeKeyLength: number;
31
- /** Max attribute value length for strings (default: 1000) */
32
- maxAttributeValueLength: number;
33
- /** Max total attributes per event (default: 50) */
34
- maxAttributeCount: number;
35
- /** Max nesting depth for objects (default: 3) */
36
- maxNestingDepth: number;
37
- /** Sensitive field patterns to redact */
38
- sensitivePatterns: RegExp[];
39
- }
40
-
41
- /**
42
- * Events configuration types for trace context, correlation IDs, and enrichment
43
- *
44
- * @example Basic usage
45
- * ```typescript
46
- * import { init } from 'autotel';
47
- *
48
- * init({
49
- * service: 'my-app',
50
- * events: {
51
- * includeTraceContext: true,
52
- * traceUrl: (ctx) => `https://grafana.internal/explore?traceId=${ctx.traceId}`
53
- * }
54
- * });
55
- * ```
56
- */
57
- /**
58
- * Context passed to the traceUrl function for generating clickable trace URLs
59
- */
60
- interface TraceUrlContext {
61
- /** Trace ID (32 hex chars) - may be undefined outside a trace */
62
- traceId?: string;
63
- /** Span ID (16 hex chars) - may be undefined outside a trace */
64
- spanId?: string;
65
- /** Correlation ID (always present, 16 hex chars) */
66
- correlationId: string;
67
- /** Service name from init config */
68
- serviceName: string;
69
- /** Environment from init config */
70
- environment?: string;
71
- }
72
- /**
73
- * Per-key transform options for baggage enrichment
74
- */
75
- type BaggageTransform = 'plain' | 'hash' | ((value: string) => string);
76
- /**
77
- * Baggage enrichment configuration with guardrails
78
- */
79
- interface EnrichFromBaggageConfig {
80
- /**
81
- * Allowlist of baggage keys to include in events
82
- * Supports exact matches and patterns (e.g., 'tenant.*')
83
- */
84
- allow: string[];
85
- /**
86
- * Optional denylist of baggage keys to exclude
87
- * Takes precedence over allow list
88
- */
89
- deny?: string[];
90
- /**
91
- * Optional prefix to add to all enriched keys
92
- * @example 'ctx.' results in 'ctx.tenant.id'
93
- */
94
- prefix?: string;
95
- /**
96
- * Maximum number of keys to include (default: 10)
97
- * Prevents payload bloat from excessive baggage
98
- */
99
- maxKeys?: number;
100
- /**
101
- * Maximum total bytes for enriched values (default: 1024)
102
- * Prevents payload bloat from large baggage values
103
- */
104
- maxBytes?: number;
105
- /**
106
- * Per-key transform options
107
- * - 'plain': Include value as-is
108
- * - 'hash': Hash the value (for PII protection)
109
- * - function: Custom transform function
110
- *
111
- * @example
112
- * ```typescript
113
- * transform: {
114
- * 'user.id': 'hash', // Hash user ID for privacy
115
- * 'tenant.id': 'plain', // Include tenant ID as-is
116
- * 'session.id': (v) => v.slice(0, 8) // Custom truncation
117
- * }
118
- * ```
119
- */
120
- transform?: Record<string, BaggageTransform>;
121
- }
122
- /**
123
- * Events configuration for trace context and enrichment
124
- */
125
- interface EventsConfig {
126
- /**
127
- * Include trace context in events (default: false)
128
- *
129
- * When enabled, events automatically include:
130
- * - autotel.trace_id (32 hex chars)
131
- * - autotel.span_id (16 hex chars)
132
- * - autotel.trace_flags (2 hex chars)
133
- * - autotel.trace_state (raw tracestate string, if present)
134
- * - autotel.correlation_id (always present, 16 hex chars)
135
- *
136
- * Subscribers map these to platform-specific names:
137
- * - PostHog: $trace_id, $span_id
138
- * - Mixpanel: trace_id, span_id
139
- */
140
- includeTraceContext?: boolean;
141
- /**
142
- * Include full array of linked trace IDs for batch/fan-in scenarios (default: false)
143
- *
144
- * When false (default), batch/fan-in events include:
145
- * - autotel.linked_trace_id_count: Number of linked parents
146
- * - autotel.linked_trace_id_hash: Stable hash of sorted IDs (keeps payload lean)
147
- *
148
- * When true, events also include:
149
- * - autotel.linked_trace_ids: Full array of linked trace IDs
150
- */
151
- includeLinkedTraceIds?: boolean;
152
- /**
153
- * Generate clickable trace URL from context
154
- *
155
- * @param ctx - Trace context with traceId, spanId, correlationId, serviceName, environment
156
- * @returns URL string or undefined to skip
157
- *
158
- * @example Grafana Tempo
159
- * ```typescript
160
- * traceUrl: (ctx) => ctx.traceId
161
- * ? `https://grafana.internal/explore?traceId=${ctx.traceId}`
162
- * : undefined
163
- * ```
164
- *
165
- * @example Datadog
166
- * ```typescript
167
- * traceUrl: (ctx) => ctx.traceId
168
- * ? `https://app.datadoghq.com/apm/traces?traceId=${ctx.traceId}`
169
- * : undefined
170
- * ```
171
- *
172
- * @example Jaeger
173
- * ```typescript
174
- * traceUrl: (ctx) => ctx.traceId
175
- * ? `https://jaeger.internal/trace/${ctx.traceId}`
176
- * : undefined
177
- * ```
178
- */
179
- traceUrl?: (ctx: TraceUrlContext) => string | undefined;
180
- /**
181
- * Auto-enrich events from baggage with guardrails
182
- *
183
- * Automatically includes baggage entries in events without manual code.
184
- * Apply allow/deny lists and per-key transforms for PII protection.
185
- *
186
- * @example Basic allowlist
187
- * ```typescript
188
- * enrichFromBaggage: {
189
- * allow: ['tenant.id', 'user.id', 'request.id']
190
- * }
191
- * // Events include: tenant.id, user.id, request.id from baggage
192
- * ```
193
- *
194
- * @example With prefix and transforms
195
- * ```typescript
196
- * enrichFromBaggage: {
197
- * allow: ['tenant.id', 'user.id', 'user.email'],
198
- * deny: ['user.ssn'],
199
- * prefix: 'ctx.',
200
- * transform: {
201
- * 'user.id': 'hash',
202
- * 'user.email': 'hash'
203
- * }
204
- * }
205
- * // Events include: ctx.tenant.id, ctx.user.id (hashed), ctx.user.email (hashed)
206
- * ```
207
- */
208
- enrichFromBaggage?: EnrichFromBaggageConfig;
209
- }
210
-
211
- interface AutotelDevtoolsConfig {
212
- enabled?: boolean;
213
- endpoint?: string;
214
- embedded?: boolean;
215
- host?: string;
216
- port?: number;
217
- verbose?: boolean;
218
- }
219
-
220
- interface AutotelConfig {
221
- /** Service name (required) */
222
- service: string;
223
- /**
224
- * Local developer UX for autotel-devtools.
225
- *
226
- * - `true`: send traces, metrics, and logs to `http://127.0.0.1:4318`
227
- * - `{ embedded: true }`: attempt to start `autotel-devtools` automatically
228
- *
229
- * When enabled:
230
- * - `endpoint` defaults to the local devtools URL
231
- * - `logs` default to `true` unless explicitly set
232
- *
233
- * This keeps production config unchanged while making local debugging
234
- * effectively zero-config.
235
- */
236
- devtools?: boolean | AutotelDevtoolsConfig;
237
- /** Event subscribers - bring your own (PostHog, Mixpanel, etc.) */
238
- subscribers?: EventSubscriber[];
239
- /**
240
- * Additional OpenTelemetry instrumentations to register (raw OTel classes).
241
- * Useful when you need custom instrumentation configs or instrumentations
242
- * not covered by autoInstrumentations.
243
- *
244
- * **Important:** If you need custom instrumentation configs (like `requireParentSpan: false`),
245
- * use EITHER manual instrumentations OR autoInstrumentations, not both for the same library.
246
- * Manual instrumentations always take precedence over auto-instrumentations.
247
- *
248
- * @example Manual instrumentations with custom config
249
- * ```typescript
250
- * import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb'
251
- *
252
- * init({
253
- * service: 'my-app',
254
- * autoInstrumentations: false, // Disable auto-instrumentations
255
- * instrumentations: [
256
- * new MongoDBInstrumentation({
257
- * requireParentSpan: false // Custom config
258
- * })
259
- * ]
260
- * })
261
- * ```
262
- *
263
- * @example Mix auto + manual (auto for most, manual for specific configs)
264
- * ```typescript
265
- * import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb'
266
- *
267
- * init({
268
- * service: 'my-app',
269
- * autoInstrumentations: ['http', 'express'], // Auto for these
270
- * instrumentations: [
271
- * new MongoDBInstrumentation({
272
- * requireParentSpan: false // Manual config for MongoDB
273
- * })
274
- * ]
275
- * })
276
- * ```
277
- */
278
- instrumentations?: NodeSDKConfiguration['instrumentations'];
279
- /**
280
- * Simple names for auto-instrumentation.
281
- * Uses @opentelemetry/auto-instrumentations-node (peer dependency).
282
- *
283
- * **Important:** If you provide manual instrumentations for the same library,
284
- * the manual config takes precedence and auto-instrumentation for that library is disabled.
285
- *
286
- * @example Enable all auto-instrumentations (simple approach)
287
- * ```typescript
288
- * init({
289
- * service: 'my-app',
290
- * autoInstrumentations: true // Enable all with defaults
291
- * })
292
- * ```
293
- *
294
- * @example Enable specific auto-instrumentations
295
- * ```typescript
296
- * init({
297
- * service: 'my-app',
298
- * autoInstrumentations: ['express', 'pino', 'http']
299
- * })
300
- * ```
301
- *
302
- * @example Configure specific auto-instrumentations
303
- * ```typescript
304
- * init({
305
- * service: 'my-app',
306
- * autoInstrumentations: {
307
- * express: { enabled: true },
308
- * pino: { enabled: true },
309
- * http: { enabled: false }
310
- * }
311
- * })
312
- * ```
313
- *
314
- * @example Manual config when you need custom settings
315
- * ```typescript
316
- * import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb'
317
- *
318
- * init({
319
- * service: 'my-app',
320
- * autoInstrumentations: false, // Use manual control
321
- * instrumentations: [
322
- * new MongoDBInstrumentation({
323
- * requireParentSpan: false // Custom config not available with auto
324
- * })
325
- * ]
326
- * })
327
- * ```
328
- */
329
- autoInstrumentations?: string[] | boolean | Record<string, {
330
- enabled?: boolean;
331
- }>;
332
- /**
333
- * OTLP endpoint for traces/metrics/logs
334
- * Only used if you don't provide custom exporters/processors
335
- * @default process.env.OTLP_ENDPOINT || 'http://localhost:4318'
336
- */
337
- endpoint?: string;
338
- /**
339
- * Custom span processors for traces (supports multiple processors)
340
- * Allows you to use any backend: Jaeger, Zipkin, Datadog, New Relic, etc.
341
- * If not provided, defaults to OTLP with tail sampling
342
- *
343
- * @example Multiple processors
344
- * ```typescript
345
- * import { JaegerExporter } from '@opentelemetry/exporter-jaeger'
346
- * import { BatchSpanProcessor, SimpleSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base'
347
- *
348
- * init({
349
- * service: 'my-app',
350
- * spanProcessors: [
351
- * new BatchSpanProcessor(new JaegerExporter()),
352
- * new SimpleSpanProcessor(new ConsoleSpanExporter()) // Debug alongside production
353
- * ]
354
- * })
355
- * ```
356
- *
357
- * @example Single processor
358
- * ```typescript
359
- * import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'
360
- *
361
- * init({
362
- * service: 'my-app',
363
- * spanProcessors: [new SimpleSpanProcessor(new ConsoleSpanExporter())]
364
- * })
365
- * ```
366
- */
367
- spanProcessors?: SpanProcessor[];
368
- /**
369
- * Custom span processor for traces (single-item alias of spanProcessors)
370
- * @deprecated Use spanProcessors for consistency with other multi-value config fields
371
- */
372
- spanProcessor?: SpanProcessor;
373
- /**
374
- * Custom span exporters for traces (alternative to spanProcessors, supports multiple exporters)
375
- * Provide either spanProcessors OR spanExporters, not both
376
- * Each exporter will be wrapped in TailSamplingSpanProcessor + BatchSpanProcessor
377
- *
378
- * @example Multiple exporters
379
- * ```typescript
380
- * import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'
381
- * import { JaegerExporter } from '@opentelemetry/exporter-jaeger'
382
- *
383
- * init({
384
- * service: 'my-app',
385
- * spanExporters: [
386
- * new ZipkinExporter({ url: 'http://localhost:9411/api/v2/spans' }),
387
- * new JaegerExporter() // Send to multiple backends simultaneously
388
- * ]
389
- * })
390
- * ```
391
- *
392
- * @example Single exporter
393
- * ```typescript
394
- * import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'
395
- *
396
- * init({
397
- * service: 'my-app',
398
- * spanExporters: [new ZipkinExporter({ url: 'http://localhost:9411/api/v2/spans' })]
399
- * })
400
- * ```
401
- */
402
- spanExporters?: SpanExporter[];
403
- /**
404
- * Custom span exporter for traces (single-item alias of spanExporters)
405
- * @deprecated Use spanExporters for consistency with other multi-value config fields
406
- */
407
- spanExporter?: SpanExporter;
408
- /**
409
- * Custom metric readers (supports multiple readers)
410
- * Allows sending metrics to multiple backends: OTLP, Prometheus, custom readers
411
- * Defaults to OTLP metrics exporter when metrics are enabled.
412
- *
413
- * @example Multiple metric readers
414
- * ```typescript
415
- * import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics'
416
- * import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http'
417
- * import { PrometheusExporter } from '@opentelemetry/exporter-prometheus'
418
- *
419
- * init({
420
- * service: 'my-app',
421
- * metricReaders: [
422
- * new PeriodicExportingMetricReader({ exporter: new OTLPMetricExporter() }),
423
- * new PrometheusExporter() // Export to multiple backends
424
- * ]
425
- * })
426
- * ```
427
- */
428
- metricReaders?: MetricReader[];
429
- /**
430
- * Custom metric reader (single-item alias of metricReaders)
431
- * @deprecated Use metricReaders for consistency with other multi-value config fields
432
- */
433
- metricReader?: MetricReader;
434
- /**
435
- * Custom log record processors. When omitted, logs are not configured.
436
- */
437
- logRecordProcessors?: LogRecordProcessor[];
438
- /**
439
- * Custom log record processor (single-item alias of logRecordProcessors)
440
- * @deprecated Use logRecordProcessors for consistency with other multi-value config fields
441
- */
442
- logRecordProcessor?: LogRecordProcessor;
443
- /**
444
- * PostHog integration - auto-configures OTLP log exporter.
445
- *
446
- * @example
447
- * ```typescript
448
- * init({
449
- * service: 'my-app',
450
- * posthog: { url: 'https://us.i.posthog.com/i/v1/logs?token=phc_xxx' }
451
- * });
452
- * ```
453
- *
454
- * Also reads from POSTHOG_LOGS_URL environment variable as fallback.
455
- */
456
- posthog?: {
457
- url: string;
458
- };
459
- /** Additional resource attributes to merge with defaults. */
460
- resourceAttributes?: Attributes;
461
- /** Provide a fully custom Resource to merge (advanced use case). */
462
- resource?: Resource;
463
- /**
464
- * Headers for OTLP exporters. Accepts either an object map or
465
- * a "key=value" comma separated string.
466
- *
467
- * @example
468
- * ```typescript
469
- * init({
470
- * service: 'my-app',
471
- * endpoint: 'https://api.honeycomb.io',
472
- * headers: { 'x-honeycomb-team': 'YOUR_API_KEY' }
473
- * })
474
- * ```
475
- */
476
- headers?: Record<string, string> | string;
477
- /**
478
- * OTLP protocol to use for traces, metrics, and logs
479
- * - 'http': HTTP/protobuf (default, uses port 4318)
480
- * - 'grpc': gRPC (uses port 4317)
481
- *
482
- * Can be overridden with OTEL_EXPORTER_OTLP_PROTOCOL env var.
483
- *
484
- * Note: gRPC exporters are optional peer dependencies. Install them with:
485
- * ```bash
486
- * pnpm add @opentelemetry/exporter-trace-otlp-grpc @opentelemetry/exporter-metrics-otlp-grpc
487
- * ```
488
- *
489
- * @example HTTP (default)
490
- * ```typescript
491
- * init({
492
- * service: 'my-app',
493
- * protocol: 'http', // or omit (defaults to http)
494
- * endpoint: 'http://localhost:4318'
495
- * })
496
- * ```
497
- *
498
- * @example gRPC
499
- * ```typescript
500
- * init({
501
- * service: 'my-app',
502
- * protocol: 'grpc',
503
- * endpoint: 'grpc://localhost:4317'
504
- * })
505
- * ```
506
- *
507
- * @default 'http'
508
- */
509
- protocol?: 'http' | 'grpc';
510
- /**
511
- * Optional factory to build a customised NodeSDK instance from our defaults.
512
- */
513
- sdkFactory?: (defaults: Partial<NodeSDKConfiguration>) => NodeSDK;
514
- /**
515
- * Infrastructure metrics configuration
516
- * - true: always enabled (default)
517
- * - false: always disabled
518
- * - 'auto': always enabled (same as true)
519
- *
520
- * Can be overridden with AUTOTEL_METRICS=on|off env var
521
- */
522
- metrics?: boolean | 'auto';
523
- /**
524
- * OTLP logs configuration
525
- * - true: auto-configure OTLP log exporter from endpoint
526
- * - false: disabled (default)
527
- * - 'auto': same as false (opt-in only)
528
- *
529
- * When enabled and an endpoint is configured, autotel will automatically
530
- * create a BatchLogRecordProcessor with an OTLPLogExporter - no manual
531
- * imports needed. Works alongside logRecordProcessors (additive).
532
- *
533
- * Requires @opentelemetry/sdk-logs and @opentelemetry/exporter-logs-otlp-http
534
- * (or -grpc) as peer dependencies.
535
- *
536
- * Can be overridden with AUTOTEL_LOGS=on|off env var.
537
- *
538
- * @example
539
- * ```typescript
540
- * init({
541
- * service: 'my-app',
542
- * endpoint: 'http://localhost:4318',
543
- * logs: true,
544
- * });
545
- * ```
546
- */
547
- logs?: boolean | 'auto';
548
- /** Sampling strategy - takes precedence over `sampling` preset */
549
- sampler?: Sampler;
550
- /**
551
- * Sampling preset shorthand — resolves to a pre-configured sampler.
552
- * If both `sampler` and `sampling` are provided, `sampler` takes precedence.
553
- *
554
- * @default 'production' (10% baseline + always-on for errors/slow)
555
- *
556
- * **Footgun for one-shot scripts:** the default samples ~90% of spans away,
557
- * which means a fixture-capture script that emits a single normal span
558
- * almost always sees zero output. For local debugging and capture use:
559
- *
560
- * ```typescript
561
- * init({
562
- * service: 'fixture-capture',
563
- * spanProcessors: [new SimpleSpanProcessor(new InMemorySpanExporter())],
564
- * sampling: 'development', // capture EVERY span
565
- * });
566
- * ```
567
- *
568
- * Read `exporter.getFinishedSpans()` **before** calling `shutdown()` —
569
- * `InMemorySpanExporter.shutdown()` resets state.
570
- */
571
- sampling?: SamplingPreset;
572
- /** Service version (default: auto-detect from package.json or '1.0.0') */
573
- version?: string;
574
- /** Environment (default: process.env.NODE_ENV || 'development') */
575
- environment?: string;
576
- /**
577
- * Logger instance for internal autotel diagnostic messages
578
- *
579
- * This logger is used by autotel internally to log initialization, warnings,
580
- * and debug information. Any logger with info/warn/error/debug methods works.
581
- *
582
- * **For OTel instrumentation of your application logs**, use the `autoInstrumentations` option:
583
- * - `autoInstrumentations: ['pino']` - Injects traceId/spanId into Pino logs
584
- * - `autoInstrumentations: ['winston']` - Injects traceId/spanId into Winston logs
585
- *
586
- * Default: silent logger (no-op)
587
- *
588
- * @example Pino with OTel instrumentation
589
- * ```typescript
590
- * import pino from 'pino'
591
- * import { init } from 'autotel'
592
- *
593
- * const logger = pino({ level: 'info' })
594
- * init({
595
- * service: 'my-app',
596
- * logger, // For autotel's internal logs
597
- * autoInstrumentations: ['pino'] // For OTel trace context in YOUR logs
598
- * })
599
- * ```
600
- *
601
- * @example Custom logger for autotel diagnostics
602
- * ```typescript
603
- * const logger = {
604
- * info: (msg, extra) => console.log(msg, extra),
605
- * warn: (msg, extra) => console.warn(msg, extra),
606
- * error: (msg, err, extra) => console.error(msg, err, extra),
607
- * debug: (msg, extra) => console.debug(msg, extra),
608
- * }
609
- * init({ service: 'my-app', logger })
610
- * ```
611
- */
612
- logger?: Logger;
613
- /**
614
- * Flush events queue when root spans end
615
- * - true: Flush on root span completion (default)
616
- * - false: Use batching (events flush every 10 seconds automatically)
617
- *
618
- * Only flushes on root spans to avoid excessive network calls.
619
- * Default is true for serverless/short-lived processes. Set to false
620
- * for long-running services where batching is more efficient.
621
- */
622
- flushOnRootSpanEnd?: boolean;
623
- /**
624
- * Force-flush OpenTelemetry spans on shutdown (default: false)
625
- *
626
- * When enabled, spans are force-flushed along with events on root
627
- * span completion. This is useful for serverless/short-lived processes where
628
- * spans may not export before the process ends.
629
- *
630
- * - true: Force-flush spans on root span completion (~50-200ms latency)
631
- * - false: Spans export via normal batch processor (default behavior)
632
- *
633
- * Only applies when flushOnRootSpanEnd is also enabled.
634
- *
635
- * Note: For edge runtimes (Cloudflare Workers, Vercel Edge), use the
636
- * 'autotel-edge' package instead, which handles this automatically.
637
- *
638
- * @example Serverless with force-flush
639
- * ```typescript
640
- * init({
641
- * service: 'my-lambda',
642
- * flushOnRootSpanEnd: true,
643
- * forceFlushOnShutdown: true, // Force-flush spans
644
- * });
645
- * ```
646
- */
647
- forceFlushOnShutdown?: boolean;
648
- /**
649
- * Automatically copy baggage entries to span attributes
650
- *
651
- * When enabled, all baggage entries are automatically added as span attributes,
652
- * making them visible in trace UIs (Jaeger, Grafana, DataDog, etc.) without
653
- * manually calling ctx.setAttribute() for each entry.
654
- *
655
- * - `true`: adds baggage with 'baggage.' prefix (e.g. baggage.tenant.id)
656
- * - `string`: uses custom prefix (e.g. 'ctx' → ctx.tenant.id, '' → tenant.id)
657
- * - `false` or omit: disabled (default)
658
- *
659
- * @default false
660
- *
661
- * @example Enable with default prefix
662
- * ```typescript
663
- * init({
664
- * service: 'my-app',
665
- * baggage: true
666
- * });
667
- *
668
- * // Now baggage automatically appears as span attributes
669
- * await withBaggage({
670
- * baggage: { 'tenant.id': 't1', 'user.id': 'u1' },
671
- * fn: async () => {
672
- * // Span has baggage.tenant.id and baggage.user.id attributes!
673
- * }
674
- * });
675
- * ```
676
- *
677
- * @example Custom prefix
678
- * ```typescript
679
- * init({
680
- * service: 'my-app',
681
- * baggage: 'ctx' // Uses 'ctx.' prefix
682
- * });
683
- * // Creates attributes: ctx.tenant.id, ctx.user.id
684
- * ```
685
- *
686
- * @example No prefix
687
- * ```typescript
688
- * init({
689
- * service: 'my-app',
690
- * baggage: '' // No prefix
691
- * });
692
- * // Creates attributes: tenant.id, user.id
693
- * ```
694
- */
695
- baggage?: boolean | string;
696
- /**
697
- * Validation configuration for events events
698
- * - Override default sensitive field patterns for redaction
699
- * - Customize max lengths, nesting depth, etc.
700
- *
701
- * @example Disable redaction for development
702
- * ```typescript
703
- * init({
704
- * service: 'my-app',
705
- * validation: {
706
- * sensitivePatterns: [] // Disable all redaction
707
- * }
708
- * })
709
- * ```
710
- *
711
- * @example Add custom patterns
712
- * ```typescript
713
- * init({
714
- * service: 'my-app',
715
- * validation: {
716
- * sensitivePatterns: [
717
- * /password/i,
718
- * /apiKey/i,
719
- * /customSecret/i // Your custom pattern
720
- * ]
721
- * }
722
- * })
723
- * ```
724
- */
725
- validation?: Partial<ValidationConfig>;
726
- /**
727
- * Events configuration for trace context, correlation IDs, and enrichment
728
- *
729
- * Controls how product events integrate with distributed tracing:
730
- * - `includeTraceContext`: Automatically include trace context in events
731
- * - `includeLinkedTraceIds`: Include full array of linked trace IDs (for batch/fan-in)
732
- * - `traceUrl`: Generate clickable trace URLs in events
733
- * - `enrichFromBaggage`: Auto-enrich events from baggage with guardrails
734
- *
735
- * @example Basic trace context
736
- * ```typescript
737
- * init({
738
- * service: 'my-app',
739
- * events: {
740
- * includeTraceContext: true
741
- * }
742
- * });
743
- * // Events now include autotel.trace_id, autotel.span_id, autotel.correlation_id
744
- * ```
745
- *
746
- * @example With clickable trace URLs
747
- * ```typescript
748
- * init({
749
- * service: 'my-app',
750
- * events: {
751
- * includeTraceContext: true,
752
- * traceUrl: (ctx) => `https://grafana.internal/explore?traceId=${ctx.traceId}`
753
- * }
754
- * });
755
- * ```
756
- *
757
- * @example With baggage enrichment
758
- * ```typescript
759
- * init({
760
- * service: 'my-app',
761
- * events: {
762
- * includeTraceContext: true,
763
- * enrichFromBaggage: {
764
- * allow: ['tenant.id', 'user.id'],
765
- * prefix: 'ctx.',
766
- * maxKeys: 10,
767
- * maxBytes: 1024
768
- * }
769
- * }
770
- * });
771
- * ```
772
- */
773
- events?: EventsConfig;
774
- /**
775
- * Debug mode for local span inspection.
776
- * Enables console output to help you see spans as they're created.
777
- *
778
- * - `true`: Raw JSON output (ConsoleSpanExporter)
779
- * - `'pretty'`: Colorized, hierarchical output (PrettyConsoleExporter)
780
- * - `false`/undefined: No console output (default)
781
- *
782
- * When enabled: Outputs spans to console AND sends to backend (if endpoint/exporter configured)
783
- *
784
- * Perfect for progressive development:
785
- * - Start with debug: 'pretty' (no endpoint) → see traces immediately with nice formatting
786
- * - Add endpoint later → console + backend, verify before choosing provider
787
- * - Remove debug in production → backend only, clean production config
788
- *
789
- * Can be overridden with AUTOTEL_DEBUG environment variable.
790
- *
791
- * @example Pretty debug output (recommended for development)
792
- * ```typescript
793
- * init({
794
- * service: 'my-app',
795
- * debug: 'pretty' // Colorized, hierarchical output
796
- * })
797
- * ```
798
- *
799
- * @example Raw JSON output (verbose)
800
- * ```typescript
801
- * init({
802
- * service: 'my-app',
803
- * debug: true // Raw ConsoleSpanExporter output
804
- * })
805
- * ```
806
- *
807
- * @example Environment variable
808
- * ```bash
809
- * AUTOTEL_DEBUG=pretty node server.js
810
- * AUTOTEL_DEBUG=true node server.js
811
- * ```
812
- */
813
- debug?: boolean | 'pretty';
814
- /**
815
- * Filter predicate to drop unwanted spans before processing.
816
- *
817
- * Useful for filtering out noisy spans from specific instrumentations
818
- * (e.g., Next.js internal spans, health check endpoints).
819
- *
820
- * The filter runs on completed spans (onEnd), so you have access to:
821
- * - `span.name` - Span name
822
- * - `span.attributes` - All span attributes
823
- * - `span.instrumentationScope` - `{ name, version }` of the instrumentation
824
- * - `span.status` - Span status code and message
825
- * - `span.duration` - Span duration as `[seconds, nanoseconds]`
826
- *
827
- * Return `true` to keep the span, `false` to drop it.
828
- *
829
- * @example Filter out Next.js instrumentation spans
830
- * ```typescript
831
- * init({
832
- * service: 'my-app',
833
- * spanFilter: (span) => span.instrumentationScope.name !== 'next.js'
834
- * })
835
- * ```
836
- *
837
- * @example Filter out health check spans
838
- * ```typescript
839
- * init({
840
- * service: 'my-app',
841
- * spanFilter: (span) => !span.name.includes('/health')
842
- * })
843
- * ```
844
- *
845
- * @example Complex filtering (multiple conditions)
846
- * ```typescript
847
- * init({
848
- * service: 'my-app',
849
- * spanFilter: (span) => {
850
- * // Drop Next.js internal spans
851
- * if (span.instrumentationScope.name === 'next.js') return false;
852
- * // Drop health checks
853
- * if (span.name.includes('/health')) return false;
854
- * // Drop very short spans (less than 1ms)
855
- * const [secs, nanos] = span.duration;
856
- * if (secs === 0 && nanos < 1_000_000) return false;
857
- * return true;
858
- * }
859
- * })
860
- * ```
861
- */
862
- spanFilter?: SpanFilterPredicate;
863
- /**
864
- * Normalize span names to reduce cardinality from dynamic path segments.
865
- *
866
- * High-cardinality span names (e.g., `/users/123/posts/456`) cause issues:
867
- * - Cost explosions in observability backends
868
- * - Cardinality limits exceeded
869
- * - Poor UX when searching/filtering traces
870
- *
871
- * The normalizer transforms dynamic segments into placeholders:
872
- * - `/users/123` → `/users/:id`
873
- * - `/items/550e8400-e29b-...` → `/items/:uuid`
874
- *
875
- * Provide either a custom function or use a built-in preset:
876
- * - `'rest-api'` - Numeric IDs, UUIDs, ObjectIds, dates, timestamps, emails
877
- * - `'graphql'` - GraphQL operation name normalization
878
- * - `'minimal'` - Only numeric IDs and UUIDs
879
- *
880
- * @example Custom normalizer function
881
- * ```typescript
882
- * init({
883
- * service: 'my-app',
884
- * spanNameNormalizer: (name) => {
885
- * return name
886
- * .replace(/\/[0-9]+/g, '/:id')
887
- * .replace(/\/[a-f0-9-]{36}/gi, '/:uuid');
888
- * }
889
- * })
890
- * ```
891
- *
892
- * @example Using built-in preset
893
- * ```typescript
894
- * init({
895
- * service: 'my-app',
896
- * spanNameNormalizer: 'rest-api'
897
- * })
898
- * ```
899
- *
900
- * @example Combining with spanFilter
901
- * ```typescript
902
- * init({
903
- * service: 'my-app',
904
- * spanNameNormalizer: 'rest-api',
905
- * spanFilter: (span) => span.instrumentationScope.name !== 'next.js'
906
- * })
907
- * ```
908
- */
909
- spanNameNormalizer?: SpanNameNormalizerConfig;
910
- /**
911
- * Automatically redact PII and sensitive data from span attributes before export.
912
- * Critical for compliance (GDPR, PCI-DSS, HIPAA) and data security.
913
- *
914
- * Auto-enabled in production: when this is left unset and the resolved
915
- * environment is `production`, the `'default'` preset is applied. Override
916
- * with the `AUTOTEL_REDACT_PII` env var (`off` / `strict` / `pci-dss` / ...)
917
- * or pass `false` to disable redaction entirely.
918
- *
919
- * Can be a preset name, custom configuration, or `false` to disable:
920
- * - `'default'`: Emails, phones, SSNs, credit cards, sensitive keys (password, secret, token)
921
- * - `'strict'`: Default + Bearer tokens, JWTs, API keys in values
922
- * - `'pci-dss'`: Payment card industry focus (credit cards, CVV, card-related keys)
923
- *
924
- * @example Use default preset
925
- * ```typescript
926
- * init({
927
- * service: 'my-app',
928
- * attributeRedactor: 'default'
929
- * })
930
- * ```
931
- *
932
- * @example Custom patterns
933
- * ```typescript
934
- * init({
935
- * service: 'my-app',
936
- * attributeRedactor: {
937
- * keyPatterns: [/password/i, /secret/i],
938
- * valuePatterns: [
939
- * { name: 'customerId', pattern: /CUST-\d{8}/g, replacement: 'CUST-***' }
940
- * ]
941
- * }
942
- * })
943
- * ```
944
- *
945
- * @example Custom redactor function
946
- * ```typescript
947
- * init({
948
- * service: 'my-app',
949
- * attributeRedactor: {
950
- * redactor: (key, value) => {
951
- * if (key === 'user.email' && typeof value === 'string') {
952
- * return value.replace(/@.+/, '@[REDACTED]');
953
- * }
954
- * return value;
955
- * }
956
- * }
957
- * })
958
- * ```
959
- */
960
- attributeRedactor?: AttributeRedactorConfig | AttributeRedactorPreset | false;
961
- /**
962
- * OpenLLMetry integration for LLM observability.
963
- * Requires @traceloop/node-server-sdk as an optional peer dependency.
964
- *
965
- * @example Enable OpenLLMetry with default settings
966
- * ```typescript
967
- * init({
968
- * service: 'my-app',
969
- * openllmetry: { enabled: true }
970
- * })
971
- * ```
972
- *
973
- * @example Enable with custom options
974
- * ```typescript
975
- * init({
976
- * service: 'my-app',
977
- * openllmetry: {
978
- * enabled: true,
979
- * options: {
980
- * disableBatch: process.env.NODE_ENV !== 'production',
981
- * apiKey: process.env.TRACELOOP_API_KEY
982
- * }
983
- * }
984
- * })
985
- * ```
986
- */
987
- openllmetry?: {
988
- enabled: boolean;
989
- options?: Record<string, unknown>;
990
- };
991
- /**
992
- * Canonical log lines - automatically emit spans as wide events (canonical log lines)
993
- *
994
- * When enabled, each span (or root span only) is automatically emitted as a
995
- * comprehensive log record with ALL span attributes. This implements the
996
- * "canonical log line" pattern: one comprehensive event per request with all context.
997
- *
998
- * **Benefits:**
999
- * - One log line per request with all context (wide event)
1000
- * - High-cardinality, high-dimensionality data for powerful queries
1001
- * - Automatic - no manual logging needed
1002
- * - Queryable as structured data instead of string search
1003
- *
1004
- * @example Basic usage (one canonical log line per request)
1005
- * ```typescript
1006
- * init({
1007
- * service: 'checkout-api',
1008
- * canonicalLogLines: {
1009
- * enabled: true,
1010
- * rootSpansOnly: true, // One canonical log line per request
1011
- * },
1012
- * });
1013
- * ```
1014
- *
1015
- * @example With custom logger
1016
- * ```typescript
1017
- * import pino from 'pino';
1018
- * const logger = pino();
1019
- * init({
1020
- * service: 'my-app',
1021
- * logger,
1022
- * canonicalLogLines: {
1023
- * enabled: true,
1024
- * logger, // Use Pino for canonical log lines
1025
- * rootSpansOnly: true,
1026
- * },
1027
- * });
1028
- * ```
1029
- *
1030
- * @example Custom message format
1031
- * ```typescript
1032
- * init({
1033
- * service: 'my-app',
1034
- * canonicalLogLines: {
1035
- * enabled: true,
1036
- * messageFormat: (span) => {
1037
- * const status = span.status.code === 2 ? 'ERROR' : 'SUCCESS';
1038
- * return `${span.name} [${status}]`;
1039
- * },
1040
- * },
1041
- * });
1042
- * ```
1043
- */
1044
- canonicalLogLines?: {
1045
- enabled: boolean;
1046
- /** Logger to use for emitting canonical log lines (defaults to OTel Logs API) */
1047
- logger?: Logger;
1048
- /** Only emit canonical log lines for root spans (default: false) */
1049
- rootSpansOnly?: boolean;
1050
- /** Minimum log level for canonical log lines (default: 'info') */
1051
- minLevel?: 'debug' | 'info' | 'warn' | 'error';
1052
- /** Custom message format (default: uses span name) */
1053
- messageFormat?: (span: _opentelemetry_sdk_trace_base.ReadableSpan) => string;
1054
- /** Whether to include resource attributes (default: true) */
1055
- includeResourceAttributes?: boolean;
1056
- /** Predicate to decide whether to emit (runs after event is built). */
1057
- shouldEmit?: CanonicalLogLineOptions['shouldEmit'];
1058
- /**
1059
- * Declarative tail sampling conditions (OR logic).
1060
- * Ignored when `shouldEmit` is provided.
1061
- * @example keep: [{ status: 500 }, { durationMs: 1000 }]
1062
- */
1063
- keep?: CanonicalLogLineOptions['keep'];
1064
- /** Callback invoked after emit for custom fan-out. */
1065
- drain?: CanonicalLogLineOptions['drain'];
1066
- /** Handler for drain failures. */
1067
- onDrainError?: CanonicalLogLineOptions['onDrainError'];
1068
- /**
1069
- * Pretty-print canonical log lines to console.
1070
- * Defaults to true when NODE_ENV is 'development'.
1071
- */
1072
- pretty?: boolean;
1073
- };
1074
- /**
1075
- * Suppress console output while keeping OTel exporters running.
1076
- * Useful for platforms like GCP Cloud Run / AWS Lambda where stdout
1077
- * is managed externally by the platform's log collector.
1078
- *
1079
- * @default false
1080
- */
1081
- silent?: boolean;
1082
- /**
1083
- * Minimum log level for internal autotel diagnostic messages.
1084
- * Messages below this level are dropped before processing.
1085
- *
1086
- * @default 'info'
1087
- */
1088
- minLevel?: 'debug' | 'info' | 'warn' | 'error';
1089
- }
1090
- /**
1091
- * Lock the logger to prevent further `init()` calls.
1092
- * Use this when framework plugins set up instrumentation and you want
1093
- * to prevent accidental re-initialization from user code.
1094
- */
1095
- declare function lockLogger(): void;
1096
- /**
1097
- * Check if the logger has been locked.
1098
- */
1099
- declare function isLoggerLocked(): boolean;
1100
- /**
1101
- * Initialize autotel - Write Once, Observe Everywhere
1102
- *
1103
- * Follows OpenTelemetry standards: opinionated defaults with full flexibility
1104
- * Idempotent: multiple calls are safe, last one wins
1105
- *
1106
- * @example Minimal setup (OTLP default)
1107
- * ```typescript
1108
- * init({ service: 'my-app' })
1109
- * ```
1110
- *
1111
- * @example With events (observe in PostHog, Mixpanel, etc.)
1112
- * ```typescript
1113
- * import { PostHogSubscriber } from 'autotel-subscribers/posthog';
1114
- *
1115
- * init({
1116
- * service: 'my-app',
1117
- * subscribers: [new PostHogSubscriber({ apiKey: '...' })]
1118
- * })
1119
- * ```
1120
- *
1121
- * @example Observe in Jaeger
1122
- * ```typescript
1123
- * import { JaegerExporter } from '@opentelemetry/exporter-jaeger'
1124
- *
1125
- * init({
1126
- * service: 'my-app',
1127
- * spanExporter: new JaegerExporter({ endpoint: 'http://localhost:14268/api/traces' })
1128
- * })
1129
- * ```
1130
- *
1131
- * @example Observe in Zipkin
1132
- * ```typescript
1133
- * import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'
1134
- *
1135
- * init({
1136
- * service: 'my-app',
1137
- * spanExporter: new ZipkinExporter({ url: 'http://localhost:9411/api/v2/spans' })
1138
- * })
1139
- * ```
1140
- *
1141
- * @example Observe in Datadog
1142
- * ```typescript
1143
- * import { DatadogSpanProcessor } from '@opentelemetry/exporter-datadog'
1144
- *
1145
- * init({
1146
- * service: 'my-app',
1147
- * spanProcessor: new DatadogSpanProcessor({ ... })
1148
- * })
1149
- * ```
1150
- *
1151
- * @example Console output (dev)
1152
- * ```typescript
1153
- * import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'
1154
- *
1155
- * init({
1156
- * service: 'my-app',
1157
- * spanProcessor: new SimpleSpanProcessor(new ConsoleSpanExporter())
1158
- * })
1159
- * ```
1160
- */
1161
- declare function init(cfg: AutotelConfig): void;
1162
- /**
1163
- * Check if autotel has been initialized
1164
- */
1165
- declare function isInitialized(): boolean;
1166
-
1167
- export { type AutotelConfig as A, isInitialized as a, isLoggerLocked as b, init as i, lockLogger as l };