autotel 2.18.0 → 2.19.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 (67) hide show
  1. package/dist/attributes.cjs +21 -20
  2. package/dist/attributes.js +2 -1
  3. package/dist/chunk-2ZKEORFN.cjs +14 -0
  4. package/dist/chunk-2ZKEORFN.cjs.map +1 -0
  5. package/dist/chunk-4A53YIAX.js +180 -0
  6. package/dist/chunk-4A53YIAX.js.map +1 -0
  7. package/dist/{chunk-QKVQWGTF.js → chunk-5JLXDCL2.js} +3 -3
  8. package/dist/{chunk-QKVQWGTF.js.map → chunk-5JLXDCL2.js.map} +1 -1
  9. package/dist/chunk-7552UTQW.js +11 -0
  10. package/dist/chunk-7552UTQW.js.map +1 -0
  11. package/dist/{chunk-NWT5SYOX.cjs → chunk-BEVIAKTB.cjs} +5 -5
  12. package/dist/{chunk-NWT5SYOX.cjs.map → chunk-BEVIAKTB.cjs.map} +1 -1
  13. package/dist/chunk-ESMHTKLJ.cjs +206 -0
  14. package/dist/chunk-ESMHTKLJ.cjs.map +1 -0
  15. package/dist/{chunk-QP5LVD4L.js → chunk-G47ZCJGW.js} +25 -3
  16. package/dist/{chunk-QP5LVD4L.js.map → chunk-G47ZCJGW.js.map} +1 -1
  17. package/dist/{chunk-WC2AMGBX.js → chunk-LCMARHLX.js} +3 -3
  18. package/dist/{chunk-WC2AMGBX.js.map → chunk-LCMARHLX.js.map} +1 -1
  19. package/dist/{chunk-HZ23L5KR.cjs → chunk-LGT7XA5O.cjs} +5 -5
  20. package/dist/{chunk-HZ23L5KR.cjs.map → chunk-LGT7XA5O.cjs.map} +1 -1
  21. package/dist/{chunk-4HPWUYCV.js → chunk-M4US3P4K.js} +3 -170
  22. package/dist/chunk-M4US3P4K.js.map +1 -0
  23. package/dist/{chunk-FMPBL2NF.js → chunk-XBVB3AFF.js} +3 -3
  24. package/dist/{chunk-FMPBL2NF.js.map → chunk-XBVB3AFF.js.map} +1 -1
  25. package/dist/{chunk-DWRTSOGR.cjs → chunk-XI5WPVR5.cjs} +25 -3
  26. package/dist/chunk-XI5WPVR5.cjs.map +1 -0
  27. package/dist/{chunk-74L5DOB4.cjs → chunk-XNBTEFRZ.cjs} +7 -7
  28. package/dist/{chunk-74L5DOB4.cjs.map → chunk-XNBTEFRZ.cjs.map} +1 -1
  29. package/dist/chunk-XRBP4RYL.cjs +764 -0
  30. package/dist/chunk-XRBP4RYL.cjs.map +1 -0
  31. package/dist/decorators.cjs +1 -1
  32. package/dist/decorators.js +1 -1
  33. package/dist/functional.cjs +8 -8
  34. package/dist/functional.js +1 -1
  35. package/dist/index.cjs +65 -43
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.d.cts +1 -0
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.js +8 -6
  40. package/dist/index.js.map +1 -1
  41. package/dist/messaging.cjs +5 -5
  42. package/dist/messaging.js +2 -2
  43. package/dist/semantic-conventions.cjs +30 -0
  44. package/dist/semantic-conventions.cjs.map +1 -0
  45. package/dist/semantic-conventions.d.cts +29 -0
  46. package/dist/semantic-conventions.d.ts +29 -0
  47. package/dist/semantic-conventions.js +5 -0
  48. package/dist/semantic-conventions.js.map +1 -0
  49. package/dist/semantic-helpers.cjs +6 -6
  50. package/dist/semantic-helpers.js +2 -2
  51. package/dist/webhook.cjs +2 -2
  52. package/dist/webhook.js +1 -1
  53. package/dist/workflow-distributed.cjs +3 -3
  54. package/dist/workflow-distributed.js +1 -1
  55. package/dist/workflow.cjs +6 -6
  56. package/dist/workflow.js +2 -2
  57. package/package.json +16 -11
  58. package/src/decorators.test.ts +22 -72
  59. package/src/functional.test.ts +24 -6
  60. package/src/functional.ts +37 -2
  61. package/src/index.ts +9 -0
  62. package/src/init.openllmetry.test.ts +76 -76
  63. package/src/semantic-conventions.ts +15 -0
  64. package/dist/chunk-4HPWUYCV.js.map +0 -1
  65. package/dist/chunk-7F4PDILZ.cjs +0 -931
  66. package/dist/chunk-7F4PDILZ.cjs.map +0 -1
  67. package/dist/chunk-DWRTSOGR.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/attributes/builders.ts","../src/attributes/validators.ts","../src/attributes/utils.ts","../src/attributes/attachers.ts","../src/attributes/domains.ts"],"names":["UserAttributes","SessionAttributes","DeviceAttributes","HTTPAttributes","DBAttributes","ServiceAttributes","NetworkAttributes","ServerAddressAttributes","URLAttributes","ErrorAttributes","ExceptionAttributes","ProcessAttributes","ThreadAttributes","ContainerAttributes","K8sAttributes","CloudAttributes","FaaSAttributes","FeatureFlagAttributes","MessagingAttributes","GenAIAttributes","RPCAttributes","GraphQLAttributes","OTelAttributes","CodeAttributes","TLSAttributes","REDACTOR_PATTERNS","replacement","attrs","resourceFromAttributes"],"mappings":";;;;;;;AAmEO,IAAM,KAAA,GAAQ;AAAA,EACnB,IAAA,EAAM;AAAA,IACJ,EAAA,EAAI,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,EAAE,GAAG,KAAA,EAAM,CAAA;AAAA,IACrD,KAAA,EAAO,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,KAAK,GAAG,KAAA,EAAM,CAAA;AAAA,IAC3D,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,IAAI,GAAG,KAAA,EAAM,CAAA;AAAA,IACzD,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,QAAQ,GAAG,KAAA,EAAM,CAAA;AAAA,IACjE,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,IAAI,GAAG,KAAA,EAAM,CAAA;AAAA,IACzD,KAAA,EAAO,CAAC,KAAA,MAAqB,EAAE,CAACA,gCAAA,CAAe,KAAK,GAAG,KAAA,EAAM,CAAA;AAAA,IAE7D,IAAA,EAAM,CAAC,IAAA,KAAoB;AACzB,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,EAAA,KAAO,MAAA,SAAkBA,gCAAA,CAAe,EAAE,IAAI,IAAA,CAAK,EAAA;AAC5D,MAAA,IAAI,KAAK,KAAA,KAAU,MAAA,SAAkBA,gCAAA,CAAe,KAAK,IAAI,IAAA,CAAK,KAAA;AAClE,MAAA,IAAI,KAAK,IAAA,KAAS,MAAA,SAAkBA,gCAAA,CAAe,IAAI,IAAI,IAAA,CAAK,IAAA;AAChE,MAAA,IAAI,KAAK,QAAA,KAAa,MAAA;AACpB,QAAA,MAAA,CAAOA,gCAAA,CAAe,QAAQ,CAAA,GAAI,IAAA,CAAK,QAAA;AACzC,MAAA,IAAI,KAAK,IAAA,KAAS,MAAA,SAAkBA,gCAAA,CAAe,IAAI,IAAI,IAAA,CAAK,IAAA;AAChE,MAAA,IAAI,KAAK,KAAA,KAAU,MAAA,SAAkBA,gCAAA,CAAe,KAAK,IAAI,IAAA,CAAK,KAAA;AAClE,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,EAAA,EAAI,CAAC,KAAA,MAAmB,EAAE,CAACC,mCAAA,CAAkB,EAAE,GAAG,KAAA,EAAM,CAAA;AAAA,IACxD,UAAA,EAAY,CAAC,KAAA,MAAmB,EAAE,CAACA,mCAAA,CAAkB,UAAU,GAAG,KAAA,EAAM,CAAA;AAAA,IAExE,IAAA,EAAM,CAAC,IAAA,KAAuB;AAC5B,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,EAAA,KAAO,MAAA,SAAkBA,mCAAA,CAAkB,EAAE,IAAI,IAAA,CAAK,EAAA;AAC/D,MAAA,IAAI,KAAK,UAAA,KAAe,MAAA;AACtB,QAAA,MAAA,CAAOA,mCAAA,CAAkB,UAAU,CAAA,GAAI,IAAA,CAAK,UAAA;AAC9C,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,EAAA,EAAI,CAAC,KAAA,MAAmB,EAAE,CAACC,kCAAA,CAAiB,EAAE,GAAG,KAAA,EAAM,CAAA;AAAA,IACvD,YAAA,EAAc,CAAC,KAAA,MAAmB;AAAA,MAChC,CAACA,kCAAA,CAAiB,YAAY,GAAG;AAAA,KACnC,CAAA;AAAA,IACA,eAAA,EAAiB,CAAC,KAAA,MAAmB;AAAA,MACnC,CAACA,kCAAA,CAAiB,eAAe,GAAG;AAAA,KACtC,CAAA;AAAA,IACA,SAAA,EAAW,CAAC,KAAA,MAAmB,EAAE,CAACA,kCAAA,CAAiB,SAAS,GAAG,KAAA,EAAM,CAAA;AAAA,IAErE,IAAA,EAAM,CAAC,IAAA,KAAsB;AAC3B,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,EAAA,KAAO,MAAA,SAAkBA,kCAAA,CAAiB,EAAE,IAAI,IAAA,CAAK,EAAA;AAC9D,MAAA,IAAI,KAAK,YAAA,KAAiB,MAAA;AACxB,QAAA,MAAA,CAAOA,kCAAA,CAAiB,YAAY,CAAA,GAAI,IAAA,CAAK,YAAA;AAC/C,MAAA,IAAI,KAAK,eAAA,KAAoB,MAAA;AAC3B,QAAA,MAAA,CAAOA,kCAAA,CAAiB,eAAe,CAAA,GAAI,IAAA,CAAK,eAAA;AAClD,MAAA,IAAI,KAAK,SAAA,KAAc,MAAA;AACrB,QAAA,MAAA,CAAOA,kCAAA,CAAiB,SAAS,CAAA,GAAI,IAAA,CAAK,SAAA;AAC5C,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,CAAC,KAAA,MAAmB,EAAE,CAACC,gCAAA,CAAe,aAAa,GAAG,KAAA,EAAM,CAAA;AAAA,MACpE,cAAA,EAAgB,CAAC,KAAA,MAAmB;AAAA,QAClC,CAACA,gCAAA,CAAe,qBAAqB,GAAG;AAAA,OAC1C,CAAA;AAAA,MACA,WAAA,EAAa,CAAC,KAAA,MAAmB;AAAA,QAC/B,CAACA,gCAAA,CAAe,kBAAkB,GAAG;AAAA,OACvC,CAAA;AAAA,MACA,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,WAAW,GAAG,KAAA,EAAM,CAAA;AAAA,MAChE,QAAA,EAAU,CAAC,KAAA,MAAmB;AAAA,QAC5B,CAACA,gCAAA,CAAe,eAAe,GAAG;AAAA,OACpC;AAAA,KACF;AAAA,IAEA,QAAA,EAAU;AAAA,MACR,UAAA,EAAY,CAAC,KAAA,MAAmB;AAAA,QAC9B,CAACA,gCAAA,CAAe,kBAAkB,GAAG;AAAA,OACvC,CAAA;AAAA,MACA,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,YAAY,GAAG,KAAA,EAAM,CAAA;AAAA,MACjE,QAAA,EAAU,CAAC,KAAA,MAAmB;AAAA,QAC5B,CAACA,gCAAA,CAAe,gBAAgB,GAAG;AAAA,OACrC;AAAA,KACF;AAAA,IAEA,KAAA,EAAO,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,KAAK,GAAG,KAAA,EAAM,CAAA;AAAA,IAC3D,eAAA,EAAiB,CAAC,KAAA,MAAmB;AAAA,MACnC,CAACA,gCAAA,CAAe,eAAe,GAAG;AAAA,KACpC,CAAA;AAAA,IAEA,MAAA,EAAQ,CAAC,IAAA,KAA0B;AACjC,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,MAAA,KAAW,MAAA;AAClB,QAAA,MAAA,CAAOA,gCAAA,CAAe,aAAa,CAAA,GAAI,IAAA,CAAK,MAAA;AAC9C,MAAA,IAAI,KAAK,KAAA,KAAU,MAAA,SAAkBA,gCAAA,CAAe,KAAK,IAAI,IAAA,CAAK,KAAA;AAClE,MAAA,IAAI,KAAK,UAAA,KAAe,MAAA;AACtB,QAAA,MAAA,CAAOA,gCAAA,CAAe,kBAAkB,CAAA,GAAI,IAAA,CAAK,UAAA;AACnD,MAAA,IAAI,KAAK,QAAA,KAAa,MAAA;AACpB,QAAA,MAAA,CAAOA,gCAAA,CAAe,eAAe,CAAA,GAAI,IAAA,CAAK,QAAA;AAChD,MAAA,IAAI,KAAK,WAAA,KAAgB,MAAA;AACvB,QAAA,MAAA,CAAOA,gCAAA,CAAe,WAAW,CAAA,GAAI,IAAA,CAAK,WAAA;AAC5C,MAAA,IAAI,KAAK,YAAA,KAAiB,MAAA;AACxB,QAAA,MAAA,CAAOA,gCAAA,CAAe,YAAY,CAAA,GAAI,IAAA,CAAK,YAAA;AAC7C,MAAA,IAAI,KAAK,WAAA,KAAgB,MAAA;AACvB,QAAA,MAAA,CAAOA,gCAAA,CAAe,kBAAkB,CAAA,GAAI,IAAA,CAAK,WAAA;AACnD,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAAA,IAEA,MAAA,EAAQ,CAAC,IAAA,KAA0B;AACjC,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,MAAA,KAAW,MAAA;AAClB,QAAA,MAAA,CAAOA,gCAAA,CAAe,aAAa,CAAA,GAAI,IAAA,CAAK,MAAA;AAC9C,MAAA,IAAI,KAAK,GAAA,KAAQ,MAAA,SAAkBA,gCAAA,CAAe,KAAK,IAAI,IAAA,CAAK,GAAA;AAChE,MAAA,IAAI,KAAK,UAAA,KAAe,MAAA;AACtB,QAAA,MAAA,CAAOA,gCAAA,CAAe,kBAAkB,CAAA,GAAI,IAAA,CAAK,UAAA;AACnD,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,EAAA,EAAI;AAAA,IACF,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ,CAAC,KAAA,MAAmB,EAAE,CAACC,8BAAA,CAAa,UAAU,GAAG,KAAA,EAAM,CAAA;AAAA,MAC/D,SAAA,EAAW,CAAC,KAAA,MAAmB,EAAE,CAACA,8BAAA,CAAa,aAAa,GAAG,KAAA,EAAM,CAAA;AAAA,MACrE,cAAA,EAAgB,CAAC,KAAA,MAAmB;AAAA,QAClC,CAACA,8BAAA,CAAa,cAAc,GAAG;AAAA,OACjC,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,MAAmB,EAAE,CAACA,8BAAA,CAAa,SAAS,GAAG,KAAA,EAAM,CAAA;AAAA,MACjE,SAAA,EAAW,CAAC,KAAA,MAAmB,EAAE,CAACA,8BAAA,CAAa,SAAS,GAAG,KAAA,EAAM,CAAA;AAAA,MACjE,YAAA,EAAc,CAAC,KAAA,MAAmB,EAAE,CAACA,8BAAA,CAAa,YAAY,GAAG,KAAA,EAAM,CAAA;AAAA,MACvE,SAAA,EAAW,CAAC,KAAA,MAAmB,EAAE,CAACA,8BAAA,CAAa,SAAS,GAAG,KAAA,EAAM,CAAA;AAAA,MACjE,cAAA,EAAgB,CAAC,KAAA,MAA4B;AAAA,QAC3C,CAACA,8BAAA,CAAa,kBAAkB,GAAG;AAAA,OACrC,CAAA;AAAA,MACA,YAAA,EAAc,CAAC,KAAA,MAAmB;AAAA,QAChC,CAACA,8BAAA,CAAa,oBAAoB,GAAG;AAAA,OACvC,CAAA;AAAA,MAEA,IAAA,EAAM,CAAC,IAAA,KAAkB;AACvB,QAAA,MAAM,SAAkC,EAAC;AACzC,QAAA,IAAI,KAAK,MAAA,KAAW,MAAA;AAClB,UAAA,MAAA,CAAOA,8BAAA,CAAa,UAAU,CAAA,GAAI,IAAA,CAAK,MAAA;AACzC,QAAA,IAAI,KAAK,SAAA,KAAc,MAAA;AACrB,UAAA,MAAA,CAAOA,8BAAA,CAAa,aAAa,CAAA,GAAI,IAAA,CAAK,SAAA;AAC5C,QAAA,IAAI,KAAK,cAAA,KAAmB,MAAA;AAC1B,UAAA,MAAA,CAAOA,8BAAA,CAAa,cAAc,CAAA,GAAI,IAAA,CAAK,cAAA;AAE7C,QAAA,IAAI,KAAK,IAAA,KAAS,MAAA,SAAkBA,8BAAA,CAAa,SAAS,IAAI,IAAA,CAAK,IAAA;AAEnE,QAAA,IAAI,KAAK,SAAA,KAAc,MAAA;AACrB,UAAA,MAAA,CAAOA,8BAAA,CAAa,SAAS,CAAA,GAAI,IAAA,CAAK,SAAA;AACxC,QAAA,IAAI,KAAK,SAAA,KAAc,MAAA;AACrB,UAAA,MAAA,CAAOA,8BAAA,CAAa,SAAS,CAAA,GAAI,IAAA,CAAK,SAAA;AACxC,QAAA,IAAI,KAAK,YAAA,KAAiB,MAAA;AACxB,UAAA,MAAA,CAAOA,8BAAA,CAAa,YAAY,CAAA,GAAI,IAAA,CAAK,YAAA;AAC3C,QAAA,IAAI,KAAK,SAAA,KAAc,MAAA;AACrB,UAAA,MAAA,CAAOA,8BAAA,CAAa,SAAS,CAAA,GAAI,IAAA,CAAK,SAAA;AACxC,QAAA,IAAI,KAAK,cAAA,KAAmB,MAAA;AAC1B,UAAA,MAAA,CAAOA,8BAAA,CAAa,kBAAkB,CAAA,GAAI,IAAA,CAAK,cAAA;AACjD,QAAA,IAAI,KAAK,YAAA,KAAiB,MAAA;AACxB,UAAA,MAAA,CAAOA,8BAAA,CAAa,oBAAoB,CAAA,GAAI,IAAA,CAAK,YAAA;AACnD,QAAA,OAAO,MAAA;AAAA,MACT;AAAA;AACF,GACF;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACC,mCAAA,CAAkB,IAAI,GAAG,KAAA,EAAM,CAAA;AAAA,IAC5D,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACA,mCAAA,CAAkB,QAAQ,GAAG,KAAA,EAAM,CAAA;AAAA,IACpE,OAAA,EAAS,CAAC,KAAA,MAAmB,EAAE,CAACA,mCAAA,CAAkB,OAAO,GAAG,KAAA,EAAM,CAAA;AAAA,IAElE,IAAA,EAAM,CAAC,IAAA,KAAuB;AAC5B,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,IAAA,KAAS,MAAA,SAAkBA,mCAAA,CAAkB,IAAI,IAAI,IAAA,CAAK,IAAA;AACnE,MAAA,IAAI,KAAK,QAAA,KAAa,MAAA;AACpB,QAAA,MAAA,CAAOA,mCAAA,CAAkB,QAAQ,CAAA,GAAI,IAAA,CAAK,QAAA;AAC5C,MAAA,IAAI,KAAK,OAAA,KAAY,MAAA;AACnB,QAAA,MAAA,CAAOA,mCAAA,CAAkB,OAAO,CAAA,GAAI,IAAA,CAAK,OAAA;AAC3C,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,WAAA,EAAa,CAAC,KAAA,MAAmB;AAAA,MAC/B,CAACC,mCAAA,CAAkB,WAAW,GAAG;AAAA,KACnC,CAAA;AAAA,IACA,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACA,mCAAA,CAAkB,QAAQ,GAAG,KAAA,EAAM,CAAA;AAAA,IACpE,SAAA,EAAW,CAAC,KAAA,MAAmB,EAAE,CAACA,mCAAA,CAAkB,SAAS,GAAG,KAAA,EAAM,CAAA;AAAA,IACtE,YAAA,EAAc,CAAC,KAAA,MAAmB;AAAA,MAChC,CAACA,mCAAA,CAAkB,YAAY,GAAG;AAAA,KACpC,CAAA;AAAA,IACA,eAAA,EAAiB,CAAC,KAAA,MAAmB;AAAA,MACnC,CAACA,mCAAA,CAAkB,eAAe,GAAG;AAAA,KACvC,CAAA;AAAA,IAEA,IAAA,EAAM,CAAC,IAAA,KAAuB;AAC5B,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,WAAA,KAAgB,MAAA;AACvB,QAAA,MAAA,CAAOA,mCAAA,CAAkB,WAAW,CAAA,GAAI,IAAA,CAAK,WAAA;AAC/C,MAAA,IAAI,KAAK,QAAA,KAAa,MAAA;AACpB,QAAA,MAAA,CAAOA,mCAAA,CAAkB,QAAQ,CAAA,GAAI,IAAA,CAAK,QAAA;AAC5C,MAAA,IAAI,KAAK,SAAA,KAAc,MAAA;AACrB,QAAA,MAAA,CAAOA,mCAAA,CAAkB,SAAS,CAAA,GAAI,IAAA,CAAK,SAAA;AAC7C,MAAA,IAAI,KAAK,YAAA,KAAiB,MAAA;AACxB,QAAA,MAAA,CAAOA,mCAAA,CAAkB,YAAY,CAAA,GAAI,IAAA,CAAK,YAAA;AAChD,MAAA,IAAI,KAAK,eAAA,KAAoB,MAAA;AAC3B,QAAA,MAAA,CAAOA,mCAAA,CAAkB,eAAe,CAAA,GAAI,IAAA,CAAK,eAAA;AACnD,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,CAAC,KAAA,MAAmB,EAAE,CAACC,yCAAA,CAAwB,OAAO,GAAG,KAAA,EAAM,CAAA;AAAA,IACxE,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACA,yCAAA,CAAwB,IAAI,GAAG,KAAA,EAAM,CAAA;AAAA,IAClE,aAAA,EAAe,CAAC,KAAA,MAAmB;AAAA,MACjC,CAACA,yCAAA,CAAwB,aAAa,GAAG;AAAA,KAC3C,CAAA;AAAA,IAEA,IAAA,EAAM,CAAC,IAAA,KAA6B;AAClC,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,OAAA,KAAY,MAAA;AACnB,QAAA,MAAA,CAAOA,yCAAA,CAAwB,OAAO,CAAA,GAAI,IAAA,CAAK,OAAA;AACjD,MAAA,IAAI,KAAK,IAAA,KAAS,MAAA;AAChB,QAAA,MAAA,CAAOA,yCAAA,CAAwB,IAAI,CAAA,GAAI,IAAA,CAAK,IAAA;AAC9C,MAAA,IAAI,KAAK,aAAA,KAAkB,MAAA;AACzB,QAAA,MAAA,CAAOA,yCAAA,CAAwB,aAAa,CAAA,GAAI,IAAA,CAAK,aAAA;AACvD,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,GAAA,EAAK;AAAA,IACH,MAAA,EAAQ,CAAC,KAAA,MAAmB,EAAE,CAACC,+BAAA,CAAc,MAAM,GAAG,KAAA,EAAM,CAAA;AAAA,IAC5D,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACA,+BAAA,CAAc,IAAI,GAAG,KAAA,EAAM,CAAA;AAAA,IACxD,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACA,+BAAA,CAAc,IAAI,GAAG,KAAA,EAAM,CAAA;AAAA,IACxD,KAAA,EAAO,CAAC,KAAA,MAAmB,EAAE,CAACA,+BAAA,CAAc,KAAK,GAAG,KAAA,EAAM,CAAA;AAAA,IAC1D,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACA,+BAAA,CAAc,QAAQ,GAAG,KAAA,EAAM,CAAA;AAAA,IAEhE,IAAA,EAAM,CAAC,IAAA,KAAmB;AACxB,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,MAAA,KAAW,MAAA,SAAkBA,+BAAA,CAAc,MAAM,IAAI,IAAA,CAAK,MAAA;AACnE,MAAA,IAAI,KAAK,IAAA,KAAS,MAAA,SAAkBA,+BAAA,CAAc,IAAI,IAAI,IAAA,CAAK,IAAA;AAC/D,MAAA,IAAI,KAAK,IAAA,KAAS,MAAA,SAAkBA,+BAAA,CAAc,IAAI,IAAI,IAAA,CAAK,IAAA;AAC/D,MAAA,IAAI,KAAK,KAAA,KAAU,MAAA,SAAkBA,+BAAA,CAAc,KAAK,IAAI,IAAA,CAAK,KAAA;AACjE,MAAA,IAAI,KAAK,QAAA,KAAa,MAAA;AACpB,QAAA,MAAA,CAAOA,+BAAA,CAAc,QAAQ,CAAA,GAAI,IAAA,CAAK,QAAA;AACxC,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACC,iCAAA,CAAgB,IAAI,GAAG,KAAA,EAAM,CAAA;AAAA,IAC1D,OAAA,EAAS,CAAC,KAAA,MAAmB,EAAE,CAACA,iCAAA,CAAgB,OAAO,GAAG,KAAA,EAAM,CAAA;AAAA,IAChE,UAAA,EAAY,CAAC,KAAA,MAAmB,EAAE,CAACA,iCAAA,CAAgB,UAAU,GAAG,KAAA,EAAM,CAAA;AAAA,IACtE,IAAA,EAAM,CAAC,KAAA,MAA4B,EAAE,CAACA,iCAAA,CAAgB,IAAI,GAAG,KAAA,EAAM,CAAA;AAAA,IAEnE,IAAA,EAAM,CAAC,IAAA,KAAqB;AAC1B,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,IAAA,KAAS,MAAA,SAAkBA,iCAAA,CAAgB,IAAI,IAAI,IAAA,CAAK,IAAA;AACjE,MAAA,IAAI,KAAK,OAAA,KAAY,MAAA;AACnB,QAAA,MAAA,CAAOA,iCAAA,CAAgB,OAAO,CAAA,GAAI,IAAA,CAAK,OAAA;AACzC,MAAA,IAAI,KAAK,UAAA,KAAe,MAAA;AACtB,QAAA,MAAA,CAAOA,iCAAA,CAAgB,UAAU,CAAA,GAAI,IAAA,CAAK,UAAA;AAC5C,MAAA,IAAI,KAAK,IAAA,KAAS,MAAA,SAAkBA,iCAAA,CAAgB,IAAI,IAAI,IAAA,CAAK,IAAA;AACjE,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,OAAA,EAAS,CAAC,KAAA,MAAoB,EAAE,CAACC,qCAAA,CAAoB,OAAO,GAAG,KAAA,EAAM,CAAA;AAAA,IACrE,OAAA,EAAS,CAAC,KAAA,MAAmB,EAAE,CAACA,qCAAA,CAAoB,OAAO,GAAG,KAAA,EAAM,CAAA;AAAA,IACpE,UAAA,EAAY,CAAC,KAAA,MAAmB;AAAA,MAC9B,CAACA,qCAAA,CAAoB,UAAU,GAAG;AAAA,KACpC,CAAA;AAAA,IACA,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACA,qCAAA,CAAoB,IAAI,GAAG,KAAA,EAAM,CAAA;AAAA,IAC9D,UAAA,EAAY,CAAC,KAAA,MAAmB;AAAA,MAC9B,CAACA,qCAAA,CAAoB,UAAU,GAAG;AAAA,KACpC,CAAA;AAAA,IAEA,IAAA,EAAM,CAAC,IAAA,KAAyB;AAC9B,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,OAAA,KAAY,MAAA;AACnB,QAAA,MAAA,CAAOA,qCAAA,CAAoB,OAAO,CAAA,GAAI,IAAA,CAAK,OAAA;AAC7C,MAAA,IAAI,KAAK,OAAA,KAAY,MAAA;AACnB,QAAA,MAAA,CAAOA,qCAAA,CAAoB,OAAO,CAAA,GAAI,IAAA,CAAK,OAAA;AAC7C,MAAA,IAAI,KAAK,UAAA,KAAe,MAAA;AACtB,QAAA,MAAA,CAAOA,qCAAA,CAAoB,UAAU,CAAA,GAAI,IAAA,CAAK,UAAA;AAChD,MAAA,IAAI,KAAK,IAAA,KAAS,MAAA,SAAkBA,qCAAA,CAAoB,IAAI,IAAI,IAAA,CAAK,IAAA;AACrE,MAAA,IAAI,KAAK,UAAA,KAAe,MAAA;AACtB,QAAA,MAAA,CAAOA,qCAAA,CAAoB,UAAU,CAAA,GAAI,IAAA,CAAK,UAAA;AAChD,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,GAAA,EAAK,CAAC,KAAA,MAAmB,EAAE,CAACC,mCAAA,CAAkB,GAAG,GAAG,KAAA,EAAM,CAAA;AAAA,IAC1D,cAAA,EAAgB,CAAC,KAAA,MAAmB;AAAA,MAClC,CAACA,mCAAA,CAAkB,cAAc,GAAG;AAAA,KACtC,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,KAAA,MAAmB,EAAE,CAACA,mCAAA,CAAkB,OAAO,GAAG,KAAA,EAAM,CAAA;AAAA,IAClE,KAAA,EAAO,CAAC,KAAA,MAAmB,EAAE,CAACA,mCAAA,CAAkB,KAAK,GAAG,KAAA,EAAM,CAAA;AAAA,IAE9D,IAAA,EAAM,CAAC,IAAA,KAAuB;AAC5B,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,GAAA,KAAQ,MAAA,SAAkBA,mCAAA,CAAkB,GAAG,IAAI,IAAA,CAAK,GAAA;AACjE,MAAA,IAAI,KAAK,cAAA,KAAmB,MAAA;AAC1B,QAAA,MAAA,CAAOA,mCAAA,CAAkB,cAAc,CAAA,GAAI,IAAA,CAAK,cAAA;AAClD,MAAA,IAAI,KAAK,OAAA,KAAY,MAAA;AACnB,QAAA,MAAA,CAAOA,mCAAA,CAAkB,OAAO,CAAA,GAAI,IAAA,CAAK,OAAA;AAC3C,MAAA,IAAI,KAAK,KAAA,KAAU,MAAA;AACjB,QAAA,MAAA,CAAOA,mCAAA,CAAkB,KAAK,CAAA,GAAI,IAAA,CAAK,KAAA;AACzC,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,EAAA,EAAI,CAAC,KAAA,MAAmB,EAAE,CAACC,kCAAA,CAAiB,EAAE,GAAG,KAAA,EAAM,CAAA;AAAA,IACvD,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACA,kCAAA,CAAiB,IAAI,GAAG,KAAA,EAAM;AAAA,GAC7D;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,EAAA,EAAI,CAAC,KAAA,MAAmB,EAAE,CAACC,qCAAA,CAAoB,EAAE,GAAG,KAAA,EAAM,CAAA;AAAA,IAC1D,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACA,qCAAA,CAAoB,IAAI,GAAG,KAAA,EAAM,CAAA;AAAA,IAC9D,KAAA,EAAO,CAAC,KAAA,MAAmB,EAAE,CAACA,qCAAA,CAAoB,KAAK,GAAG,KAAA,EAAM,CAAA;AAAA,IAChE,GAAA,EAAK,CAAC,KAAA,MAAmB,EAAE,CAACA,qCAAA,CAAoB,GAAG,GAAG,KAAA,EAAM,CAAA;AAAA,IAE5D,IAAA,EAAM,CAAC,IAAA,KAAyB;AAC9B,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,EAAA,KAAO,MAAA,SAAkBA,qCAAA,CAAoB,EAAE,IAAI,IAAA,CAAK,EAAA;AACjE,MAAA,IAAI,KAAK,IAAA,KAAS,MAAA,SAAkBA,qCAAA,CAAoB,IAAI,IAAI,IAAA,CAAK,IAAA;AACrE,MAAA,IAAI,KAAK,KAAA,KAAU,MAAA;AACjB,QAAA,MAAA,CAAOA,qCAAA,CAAoB,KAAK,CAAA,GAAI,IAAA,CAAK,KAAA;AAC3C,MAAA,IAAI,KAAK,GAAA,KAAQ,MAAA,SAAkBA,qCAAA,CAAoB,GAAG,IAAI,IAAA,CAAK,GAAA;AACnE,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,GAAA,EAAK;AAAA,IACH,OAAA,EAAS,CAAC,KAAA,MAAmB,EAAE,CAACC,+BAAA,CAAc,OAAO,GAAG,KAAA,EAAM,CAAA;AAAA,IAC9D,aAAA,EAAe,CAAC,KAAA,MAAmB;AAAA,MACjC,CAACA,+BAAA,CAAc,aAAa,GAAG;AAAA,KACjC,CAAA;AAAA,IACA,cAAA,EAAgB,CAAC,KAAA,MAAmB;AAAA,MAClC,CAACA,+BAAA,CAAc,cAAc,GAAG;AAAA,KAClC,CAAA;AAAA,IACA,KAAA,EAAO,CAAC,KAAA,MAAmB,EAAE,CAACA,+BAAA,CAAc,KAAK,GAAG,KAAA,EAAM;AAAA,GAC5D;AAAA,EAEA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACC,iCAAA,CAAgB,QAAQ,GAAG,KAAA,EAAM,CAAA;AAAA,IAClE,SAAA,EAAW,CAAC,KAAA,MAAmB,EAAE,CAACA,iCAAA,CAAgB,SAAS,GAAG,KAAA,EAAM,CAAA;AAAA,IACpE,MAAA,EAAQ,CAAC,KAAA,MAAmB,EAAE,CAACA,iCAAA,CAAgB,MAAM,GAAG,KAAA,EAAM,CAAA;AAAA,IAC9D,gBAAA,EAAkB,CAAC,KAAA,MAAmB;AAAA,MACpC,CAACA,iCAAA,CAAgB,gBAAgB,GAAG;AAAA,KACtC,CAAA;AAAA,IACA,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACA,iCAAA,CAAgB,QAAQ,GAAG,KAAA,EAAM,CAAA;AAAA,IAElE,IAAA,EAAM,CAAC,IAAA,KAAqB;AAC1B,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,QAAA,KAAa,MAAA;AACpB,QAAA,MAAA,CAAOA,iCAAA,CAAgB,QAAQ,CAAA,GAAI,IAAA,CAAK,QAAA;AAC1C,MAAA,IAAI,KAAK,SAAA,KAAc,MAAA;AACrB,QAAA,MAAA,CAAOA,iCAAA,CAAgB,SAAS,CAAA,GAAI,IAAA,CAAK,SAAA;AAC3C,MAAA,IAAI,KAAK,MAAA,KAAW,MAAA;AAClB,QAAA,MAAA,CAAOA,iCAAA,CAAgB,MAAM,CAAA,GAAI,IAAA,CAAK,MAAA;AACxC,MAAA,IAAI,KAAK,gBAAA,KAAqB,MAAA;AAC5B,QAAA,MAAA,CAAOA,iCAAA,CAAgB,gBAAgB,CAAA,GAAI,IAAA,CAAK,gBAAA;AAClD,MAAA,IAAI,KAAK,QAAA,KAAa,MAAA;AACpB,QAAA,MAAA,CAAOA,iCAAA,CAAgB,QAAQ,CAAA,GAAI,IAAA,CAAK,QAAA;AAC1C,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,CAAC,KAAA,MAAmB,EAAE,CAACC,gCAAA,CAAe,IAAI,GAAG,KAAA,EAAM,CAAA;AAAA,IACzD,OAAA,EAAS,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,OAAO,GAAG,KAAA,EAAM,CAAA;AAAA,IAC/D,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,QAAQ,GAAG,KAAA,EAAM,CAAA;AAAA,IACjE,SAAA,EAAW,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,SAAS,GAAG,KAAA,EAAM,CAAA;AAAA,IACnE,SAAA,EAAW,CAAC,KAAA,MAAoB,EAAE,CAACA,gCAAA,CAAe,SAAS,GAAG,KAAA,EAAM;AAAA,GACtE;AAAA,EAEA,WAAA,EAAa;AAAA,IACX,GAAA,EAAK,CAAC,KAAA,MAAmB,EAAE,CAACC,uCAAA,CAAsB,GAAG,GAAG,KAAA,EAAM,CAAA;AAAA,IAC9D,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACA,uCAAA,CAAsB,QAAQ,GAAG,KAAA,EAAM,CAAA;AAAA,IACxE,OAAA,EAAS,CAAC,KAAA,MAAmB,EAAE,CAACA,uCAAA,CAAsB,OAAO,GAAG,KAAA,EAAM;AAAA,GACxE;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,MAAA,EAAQ,CAAC,KAAA,MAAmB,EAAE,CAACC,qCAAA,CAAoB,MAAM,GAAG,KAAA,EAAM,CAAA;AAAA,IAClE,WAAA,EAAa,CAAC,KAAA,MAAmB;AAAA,MAC/B,CAACA,qCAAA,CAAoB,WAAW,GAAG;AAAA,KACrC,CAAA;AAAA,IACA,SAAA,EAAW,CAAC,KAAA,MAA8C;AAAA,MACxD,CAACA,qCAAA,CAAoB,SAAS,GAAG;AAAA,KACnC,CAAA;AAAA,IACA,SAAA,EAAW,CAAC,KAAA,MAAmB,EAAE,CAACA,qCAAA,CAAoB,SAAS,GAAG,KAAA,EAAM,CAAA;AAAA,IACxE,cAAA,EAAgB,CAAC,KAAA,MAAmB;AAAA,MAClC,CAACA,qCAAA,CAAoB,cAAc,GAAG;AAAA,KACxC,CAAA;AAAA,IAEA,IAAA,EAAM,CAAC,IAAA,KAAyB;AAC9B,MAAA,MAAM,SAAkC,EAAC;AACzC,MAAA,IAAI,KAAK,MAAA,KAAW,MAAA;AAClB,QAAA,MAAA,CAAOA,qCAAA,CAAoB,MAAM,CAAA,GAAI,IAAA,CAAK,MAAA;AAC5C,MAAA,IAAI,KAAK,WAAA,KAAgB,MAAA;AACvB,QAAA,MAAA,CAAOA,qCAAA,CAAoB,WAAW,CAAA,GAAI,IAAA,CAAK,WAAA;AACjD,MAAA,IAAI,KAAK,SAAA,KAAc,MAAA;AACrB,QAAA,MAAA,CAAOA,qCAAA,CAAoB,SAAS,CAAA,GAAI,IAAA,CAAK,SAAA;AAC/C,MAAA,IAAI,KAAK,SAAA,KAAc,MAAA;AACrB,QAAA,MAAA,CAAOA,qCAAA,CAAoB,SAAS,CAAA,GAAI,IAAA,CAAK,SAAA;AAC/C,MAAA,IAAI,KAAK,cAAA,KAAmB,MAAA;AAC1B,QAAA,MAAA,CAAOA,qCAAA,CAAoB,cAAc,CAAA,GAAI,IAAA,CAAK,cAAA;AACpD,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AAAA,EAEA,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,CAAC,KAAA,MAAmB,EAAE,CAACC,iCAAA,CAAgB,MAAM,GAAG,KAAA,EAAM,CAAA;AAAA,IAC9D,YAAA,EAAc,CAAC,KAAA,MAAmB;AAAA,MAChC,CAACA,iCAAA,CAAgB,YAAY,GAAG;AAAA,KAClC,CAAA;AAAA,IACA,aAAA,EAAe,CAAC,KAAA,MAAmB;AAAA,MACjC,CAACA,iCAAA,CAAgB,aAAa,GAAG;AAAA,KACnC,CAAA;AAAA,IACA,aAAA,EAAe,CAAC,KAAA,MAAgD;AAAA,MAC9D,CAACA,iCAAA,CAAgB,aAAa,GAAG;AAAA,KACnC,CAAA;AAAA,IACA,iBAAA,EAAmB,CAAC,KAAA,MAAmB;AAAA,MACrC,CAACA,iCAAA,CAAgB,iBAAiB,GAAG;AAAA,KACvC,CAAA;AAAA,IACA,qBAAA,EAAuB,CAAC,KAAA,MAAmB;AAAA,MACzC,CAACA,iCAAA,CAAgB,qBAAqB,GAAG;AAAA,KAC3C,CAAA;AAAA,IACA,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACA,iCAAA,CAAgB,QAAQ,GAAG,KAAA,EAAM;AAAA,GACpE;AAAA,EAEA,GAAA,EAAK;AAAA,IACH,MAAA,EAAQ,CAAC,KAAA,MAAmB,EAAE,CAACC,+BAAA,CAAc,MAAM,GAAG,KAAA,EAAM,CAAA;AAAA,IAC5D,OAAA,EAAS,CAAC,KAAA,MAAmB,EAAE,CAACA,+BAAA,CAAc,OAAO,GAAG,KAAA,EAAM,CAAA;AAAA,IAC9D,MAAA,EAAQ,CAAC,KAAA,MAAmB,EAAE,CAACA,+BAAA,CAAc,MAAM,GAAG,KAAA,EAAM,CAAA;AAAA,IAC5D,cAAA,EAAgB,CAAC,KAAA,MAAmB;AAAA,MAClC,CAACA,+BAAA,CAAc,cAAc,GAAG;AAAA,KAClC;AAAA,GACF;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACC,mCAAA,CAAkB,QAAQ,GAAG,KAAA,EAAM,CAAA;AAAA,IACpE,aAAA,EAAe,CAAC,KAAA,MAAmB;AAAA,MACjC,CAACA,mCAAA,CAAkB,aAAa,GAAG;AAAA,KACrC,CAAA;AAAA,IACA,aAAA,EAAe,CAAC,KAAA,MAAkD;AAAA,MAChE,CAACA,mCAAA,CAAkB,aAAa,GAAG;AAAA,KACrC;AAAA,GACF;AAAA,EAEA,IAAA,EAAM;AAAA,IACJ,WAAA,EAAa,CAAC,KAAA,MAAmB,EAAE,CAACC,gCAAA,CAAe,WAAW,GAAG,KAAA,EAAM,CAAA;AAAA,IACvE,cAAA,EAAgB,CAAC,KAAA,MAAmB;AAAA,MAClC,CAACA,gCAAA,CAAe,cAAc,GAAG;AAAA,KACnC,CAAA;AAAA,IACA,UAAA,EAAY,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,UAAU,GAAG,KAAA,EAAM;AAAA,GACvE;AAAA,EAEA,IAAA,EAAM;AAAA,IACJ,SAAA,EAAW,CAAC,KAAA,MAAmB,EAAE,CAACC,gCAAA,CAAe,SAAS,GAAG,KAAA,EAAM,CAAA;AAAA,IACnE,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,QAAQ,GAAG,KAAA,EAAM,CAAA;AAAA,IACjE,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,QAAQ,GAAG,KAAA,EAAM,CAAA;AAAA,IACjE,KAAA,EAAO,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,KAAK,GAAG,KAAA,EAAM,CAAA;AAAA,IAC3D,MAAA,EAAQ,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,MAAM,GAAG,KAAA,EAAM,CAAA;AAAA,IAC7D,MAAA,EAAQ,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,MAAM,GAAG,KAAA,EAAM,CAAA;AAAA,IAC7D,UAAA,EAAY,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,UAAU,GAAG,KAAA,EAAM,CAAA;AAAA,IACrE,UAAA,EAAY,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,UAAU,GAAG,KAAA,EAAM,CAAA;AAAA,IACrE,QAAA,EAAU,CAAC,KAAA,MAAmB,EAAE,CAACA,gCAAA,CAAe,QAAQ,GAAG,KAAA,EAAM;AAAA,GACnE;AAAA,EAEA,GAAA,EAAK;AAAA,IACH,eAAA,EAAiB,CAAC,KAAA,MAAmB;AAAA,MACnC,CAACC,+BAAA,CAAc,eAAe,GAAG;AAAA,KACnC,CAAA;AAAA,IACA,MAAA,EAAQ,CAAC,KAAA,MAAmB,EAAE,CAACA,+BAAA,CAAc,MAAM,GAAG,KAAA,EAAM,CAAA;AAAA,IAC5D,SAAA,EAAW,CAAC,KAAA,MAAmB,EAAE,CAACA,+BAAA,CAAc,SAAS,GAAG,KAAA,EAAM,CAAA;AAAA,IAClE,OAAA,EAAS,CAAC,KAAA,MAAoB,EAAE,CAACA,+BAAA,CAAc,OAAO,GAAG,KAAA,EAAM;AAAA;AAEnE;;;ACpgBA,IAAM,qBAAA,GAAwB;AAAA,EAC5B,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,EAAgB,YAAA;AAAA,EAChB,eAAA,EAAiB,MAAA;AAAA,EACjB,aAAA,EAAe,qBAAA;AAAA,EACf,WAAA,EAAa,gBAAA;AAAA,EACb,kBAAA,EAAoB,2BAAA;AAAA,EACpB,aAAA,EAAe,UAAA;AAAA,EACf,UAAA,EAAY,UAAA;AAAA,EACZ,iBAAA,EAAmB,qBAAA;AAAA,EACnB,aAAA,EAAe,uBAAA;AAAA,EACf,aAAA,EAAe,YAAA;AAAA,EACf,kBAAA,EAAoB,gBAAA;AAAA,EACpB,SAAA,EAAW,cAAA;AAAA,EACX,cAAA,EAAgB,mBAAA;AAAA,EAChB,cAAA,EAAgB,eAAA;AAAA,EAChB,WAAA,EAAa,gBAAA;AAAA,EACb,eAAA,EAAiB,oBAAA;AAAA,EACjB,gBAAA,EAAkB,MAAA;AAAA,EAClB,0BAAA,EAA4B,MAAA;AAAA,EAC5B,wBAAA,EAA0B,qBAAA;AAAA,EAC1B,cAAA,EAAgB,oBAAA;AAAA,EAChB,gBAAA,EAAkB,gBAAA;AAAA,EAClB,qBAAA,EAAuB;AACzB,CAAA;AAEA,IAAM,YAAA,uBAAmB,GAAA,CAAI;AAAA,EAC3B,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAC,CAAA;AAEM,SAAS,iBAAA,CACd,GAAA,EACA,KAAA,EACA,MAAA,GAA0B,EAAC,EAClB;AACT,EAAA,MAAM,EAAE,UAAA,GAAa,EAAC,EAAE,GAAI,MAAA;AAE5B,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAI7B,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,KAAA;AAEpB,EAAA,IAAI,WAAW,GAAA,EAAK;AAClB,IAAA,MAAM,SAAA,GAAY,cAAA,CAAe,GAAA,EAAK,WAAA,EAAa,WAAW,GAAG,CAAA;AACjE,IAAA,IAAI,cAAc,WAAA,EAAa;AAC7B,MAAA,OAAO,SAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,IAAI,UAAA,CAAW,SAAA,IAAa,WAAA,CAAY,MAAA,GAAS,WAAW,SAAA,EAAW;AACrE,IAAA,OAAO,aAAA,CAAc,GAAA,EAAK,WAAA,EAAa,UAAA,CAAW,SAAS,CAAA;AAAA,EAC7D;AAEA,EAAA,IAAI,UAAA,CAAW,YAAA,IAAgB,YAAA,CAAa,GAAA,CAAI,WAAW,CAAA,EAAG;AAC5D,IAAA,MAAM,gBAAA,GAAmB,oBAAoB,WAAW,CAAA;AACxD,IAAA,IAAI,qBAAqB,WAAA,EAAa;AACpC,MAAA,OAAO,gBAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,OAAO,WAAA;AACT;AAEA,SAAS,cAAA,CACP,GAAA,EACA,KAAA,EACA,GAAA,EACQ;AACR,EAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,IAAA,OAAO,WAAA,CAAY,KAAK,KAAK,CAAA;AAAA,EAC/B;AAEA,EAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,IAAA,OAAO,SAAA,CAAU,KAAK,KAAK,CAAA;AAAA,EAC7B;AAEA,EAAA,IAAI,GAAA,KAAQ,OAAA,IAAW,QAAA,CAAS,GAAG,CAAA,EAAG;AACpC,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,kBAAkB,GAAG,CAAA,0DAAA;AAAA,KACvB;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,SAAS,GAAA,EAAsB;AACtC,EAAA,MAAM,cAAA,GAAiB;AAAA,IACrB,OAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,QAAA,GAAW,IAAI,WAAA,EAAY;AACjC,EAAA,OAAO,eAAe,IAAA,CAAK,CAAC,YAAY,QAAA,CAAS,QAAA,CAAS,OAAO,CAAC,CAAA;AACpE;AAEA,SAAS,WAAA,CAAY,KAAa,KAAA,EAAuB;AACvD,EAAA,IAAI,QAAA,CAAS,GAAG,CAAA,EAAG;AAEjB,IAAA,KAAA,MAAW,GAAG,OAAO,KAAK,MAAA,CAAO,OAAA,CAAQC,mCAAiB,CAAA,EAAG;AAC3D,MAAA,IAAI,OAAA,YAAmB,MAAA,IAAU,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,EAAG;AACpD,QAAA,OAAO,YAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,OAAO,YAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,SAAA,CAAU,KAAa,KAAA,EAAuB;AACrD,EAAA,IAAI,CAAC,QAAA,CAAS,GAAG,CAAA,EAAG;AAClB,IAAA,OAAO,KAAA;AAAA,EACT;AAIA,EAAA,MAAM,SAAA,GAAY,QAAA;AAClB,EAAA,MAAM,UAAA,GAAa,UAAA;AAGnB,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,CAAA,EAAG,KAAA,EAAA,EAAS;AACtC,IAAA,IAAI,IAAA,GAAO,UAAA;AACX,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,MAAA,IAAA,IAAA,CAAS,KAAA,CAAM,WAAA,CAAY,CAAC,CAAA,IAAK,CAAA,IAAK,KAAA;AACtC,MAAA,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,IAAA,EAAM,SAAS,CAAA;AAAA,IAClC;AACA,IAAA,MAAA,CAAO,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,EACxB;AAEA,EAAA,OAAO,QAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC,CAAA,CAAA;AAC5E;AAEA,SAAS,aAAA,CAAc,GAAA,EAAa,KAAA,EAAe,SAAA,EAA2B;AAC5E,EAAA,IAAI,KAAA,CAAM,UAAU,SAAA,EAAW;AAC7B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,SAAA,GAAY,CAAC,CAAA,GAAI,KAAA;AACzC;AAEA,SAAS,oBAAoB,MAAA,EAAwB;AACnD,EAAA,MAAM,KAAA,GAAQ,OAAO,WAAA,EAAY;AACjC,EAAA,IAAI,YAAA,CAAa,GAAA,CAAI,KAAK,CAAA,EAAG;AAC3B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,wBAAA,CACd,GAAA,EACA,MAAA,GAA0B,EAAC,EACZ;AACf,EAAA,MAAM,EAAE,UAAA,GAAa,IAAI,kBAAA,GAAqB,IAAG,GAAI,MAAA;AACrD,EAAA,MAAM,EAAE,cAAA,GAAiB,IAAA,EAAK,GAAI,UAAA;AAElC,EAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,MAAM,eAAe,GAAA,IAAO,qBAAA;AAC5B,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,MAAMC,YAAAA,GACJ,sBAAsB,GAAyC,CAAA;AACjE,IAAA,IAAIA,iBAAgB,MAAA,EAAW;AAE7B,MAAA,OAAA,CAAQ,IAAA;AAAA,QACN,mCAAmC,GAAG,CAAA,2GAAA;AAAA,OAExC;AAAA,IACF,CAAA,MAAO;AAEL,MAAA,OAAA,CAAQ,IAAA;AAAA,QACN,CAAA,gCAAA,EAAmC,GAAG,CAAA,sBAAA,EAAyBA,YAAW,CAAA,UAAA;AAAA,OAC5E;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAI,kBAAA,CAAmB,GAAG,CAAA,EAAG;AAC3B,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,qBAAA,EAAwB,kBAAA,CAAmB,GAAG,CAAC,CAAA,CAAE,CAAA;AAAA,EAChE;AAEA,EAAA,MAAM,WAAA,GACJ,sBAAsB,GAAyC,CAAA;AACjE,EAAA,OAAO,WAAA,IAAe,IAAA;AACxB;AAEO,SAAS,aAAA,CACd,UAAA,EACA,MAAA,GAA0B,EAAC,EACF;AACzB,EAAA,MAAM,EAAE,UAAA,GAAa,EAAE,GAAA,EAAK,QAAA,IAAW,GAAI,MAAA;AAE3C,EAAA,MAAM,WAAoC,EAAC;AAC3C,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA,EAAG;AACrD,IAAA,QAAA,CAAS,GAAG,CAAA,GAAI,iBAAA,CAAkB,KAAK,KAAA,EAAO,EAAE,YAAY,CAAA;AAAA,EAC9D;AACA,EAAA,OAAO,QAAA;AACT;AAEO,SAAS,iBAAA,GAAyC;AACvD,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,QAAA;AAAA,IACL,SAAA,EAAW,GAAA;AAAA,IACX,YAAA,EAAc,IAAA;AAAA,IACd,cAAA,EAAgB;AAAA,GAClB;AACF;;;ACtPO,SAAS,cACX,QAAA,EACsB;AACzB,EAAA,MAAM,SAAkC,EAAC;AACzC,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,MAAA,CAAO,MAAA,CAAO,QAAQ,OAAO,CAAA;AAAA,IAC/B;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,iBAAA,CACd,IAAA,EACAC,MAAAA,EACA,MAAA,EACM;AAGN,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,GAAG,iBAAA,EAAkB;AAAA,IACrB,GAAG,MAAA,EAAQ;AAAA,GACb;AACA,EAAA,MAAM,eAAA,GAAmC;AAAA,IACvC,GAAG,MAAA;AAAA,IACH,UAAA,EAAY;AAAA,GACd;AAEA,EAAA,MAAM,SAAA,GAAY,aAAA,CAAcA,MAAAA,EAAO,eAAe,CAAA;AAEtD,EAAA,MAAM,iBAAiD,EAAC;AACxD,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,EAAG;AACpD,IAAA,IAAI,UAAU,MAAA,EAAW;AAEvB,MAAA,wBAAA,CAAyB,KAAK,eAAe,CAAA;AAC7C,MAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,GAAA,EAAK,KAAA,EAAO,eAAe,CAAA;AACpE,MAAA,IAAI,mBAAmB,MAAA,EAAW;AAEhC,QAAA,cAAA,CAAe,GAAG,CAAA,GAAI,cAAA;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAA,CAAK,cAAc,cAAc,CAAA;AACnC;;;AChDO,SAAS,OAAA,CACd,aAAA,EACA,IAAA,EACA,UAAA,EACM;AACN,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA;AACvC,EAAA,iBAAA,CAAkB,aAAA,EAAe,YAAY,UAAU,CAAA;AACzD;AAEO,SAAS,UAAA,CACd,aAAA,EACA,IAAA,EACA,UAAA,EACM;AACN,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA;AAC1C,EAAA,iBAAA,CAAkB,aAAA,EAAe,YAAY,UAAU,CAAA;AACzD;AAEO,SAAS,SAAA,CACd,aAAA,EACA,IAAA,EACA,UAAA,EACM;AACN,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA;AACzC,EAAA,iBAAA,CAAkB,aAAA,EAAe,YAAY,UAAU,CAAA;AACzD;AAEO,SAAS,UAAA,CACd,aAAA,EACA,IAAA,EACA,UAAA,EACM;AACN,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AAEzC,EAAA,IAAI,YAAA,IAAgB,aAAA,IAAiB,IAAA,CAAK,MAAA,IAAU,KAAK,KAAA,EAAO;AAC9D,IAAA,MAAM,IAAA,GAAO,aAAA;AACb,IAAA,IAAA,CAAK,WAAW,CAAA,KAAA,EAAQ,IAAA,CAAK,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,CAAA,CAAE,CAAA;AAAA,EACrD;AAEA,EAAA,iBAAA,CAAkB,aAAA,EAAe,YAAY,UAAU,CAAA;AACzD;AAEO,SAAS,UAAA,CACd,aAAA,EACA,IAAA,EACA,UAAA,EACM;AACN,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AACzC,EAAA,iBAAA,CAAkB,aAAA,EAAe,YAAY,UAAU,CAAA;AACzD;AAEO,SAAS,QAAA,CACd,aAAA,EACA,IAAA,EACA,UAAA,EACM;AACN,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,EAAA,CAAG,MAAA,CAAO,KAAK,IAAI,CAAA;AAC5C,EAAA,iBAAA,CAAkB,aAAA,EAAe,YAAY,UAAU,CAAA;AACzD;AAqBO,SAAS,oBAAA,CACd,UACA,IAAA,EACU;AACV,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA;AAC1C,EAAA,OAAO,QAAA,CAAS,KAAA,CAAMC,gCAAA,CAAuB,UAAwB,CAAC,CAAA;AACxE;AAEO,SAAS,QAAA,CACd,aAAA,EACA,IAAA,EAKA,UAAA,EACM;AACN,EAAA,MAAM,WAAW,EAAC;AAElB,EAAA,IAAI,KAAK,IAAA,EAAM;AACb,IAAA,QAAA,CAAS,KAAK,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,EAC1C;AACA,EAAA,IAAI,KAAK,OAAA,EAAS;AAChB,IAAA,QAAA,CAAS,KAAK,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,EAChD;AACA,EAAA,IAAI,KAAK,MAAA,EAAQ;AACf,IAAA,QAAA,CAAS,KAAK,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,MAAM,CAAC,CAAA;AAAA,EAC9C;AAEA,EAAA,MAAM,SAAkC,EAAC;AACzC,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,MAAA,CAAO,MAAA,CAAO,QAAQ,OAAO,CAAA;AAAA,EAC/B;AAEA,EAAA,iBAAA,CAAkB,aAAA,EAAe,QAAQ,UAAU,CAAA;AACrD;AAEO,SAAS,OAAA,CACd,aAAA,EACA,IAAA,EAGA,UAAA,EACM;AACN,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AACxC,EAAA,MAAM,eAAe,KAAA,CAAM,OAAA,CAAQ,WAAA,CAAY,IAAA,CAAK,YAAY,EAAE,CAAA;AAClE,EAAA,MAAM,MAAA,GAAS,EAAE,GAAG,SAAA,EAAW,GAAG,YAAA,EAAa;AAC/C,EAAA,iBAAA,CAAkB,aAAA,EAAe,QAAQ,UAAU,CAAA;AACrD;AAEO,SAAS,QAAA,CACd,aAAA,EACA,IAAA,EACA,UAAA,EACM;AACN,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AACxC,EAAA,iBAAA,CAAkB,aAAA,EAAe,YAAY,UAAU,CAAA;AACzD;AAEO,SAAS,YAAA,CACd,aAAA,EACA,IAAA,EACA,UAAA,EACM;AACN,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA;AAC5C,EAAA,iBAAA,CAAkB,aAAA,EAAe,YAAY,UAAU,CAAA;AACzD;;;ACxJO,SAAS,WAAA,CACd,aAAA,EACA,MAAA,EAQA,UAAA,EACM;AACN,EAAA,MAAM,YAAY,KAAA,CAAM,IAAA,CAAK,KAAK,MAAA,CAAO,IAAA,IAAQ,EAAE,CAAA;AACnD,EAAA,MAAM,eAAe,KAAA,CAAM,OAAA,CAAQ,KAAK,MAAA,CAAO,OAAA,IAAW,EAAE,CAAA;AAC5D,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO;AAAA,IAClC,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,YAAY,MAAA,CAAO;AAAA,GACpB,CAAA;AACD,EAAA,MAAM,eAAe,KAAA,CAAM,OAAA,CAAQ,WAAA,CAAY,MAAA,CAAO,YAAY,EAAE,CAAA;AAEpE,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,GAAG,SAAA;AAAA,IACH,GAAG,YAAA;AAAA,IACH,GAAG,SAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,IAAI,MAAA,CAAO,MAAA,IAAU,MAAA,CAAO,KAAA,IAAS,gBAAgB,aAAA,EAAe;AAClE,IAAA,aAAA,CAAc,WAAW,CAAA,KAAA,EAAQ,MAAA,CAAO,MAAM,CAAA,CAAA,EAAI,MAAA,CAAO,KAAK,CAAA,CAAE,CAAA;AAAA,EAClE;AAEA,EAAA,iBAAA,CAAkB,aAAA,EAAe,QAAQ,UAAU,CAAA;AACrD","file":"chunk-XRBP4RYL.cjs","sourcesContent":["/**\n * Attribute builders for constructing OpenTelemetry attributes\n * Provides both key builders (Pattern A) and object builders (Pattern B)\n *\n * @example Pattern A: Key builders\n * ```typescript\n * attrs.user.id('123') // { 'user.id': '123' }\n * attrs.user.email('user@example.com') // { 'user.email': 'user@example.com' }\n * attrs.http.request.method('GET') // { 'http.request.method': 'GET' }\n * attrs.http.response.statusCode(200) // { 'http.response.status_code': 200 }\n * ```\n *\n * @example Pattern B: Object builders\n * ```typescript\n * attrs.user({ id: '123', email: 'user@example.com' })\n * attrs.http.server({ method: 'GET', route: '/users/:id', statusCode: 200 })\n * attrs.db.client({ system: 'postgresql', operation: 'SELECT', collectionName: 'users' })\n * ```\n */\n\nimport {\n UserAttributes,\n SessionAttributes,\n DeviceAttributes,\n HTTPAttributes,\n DBAttributes,\n ServiceAttributes,\n NetworkAttributes,\n ServerAddressAttributes,\n URLAttributes,\n ErrorAttributes,\n ExceptionAttributes,\n ProcessAttributes,\n ThreadAttributes,\n ContainerAttributes,\n K8sAttributes,\n CloudAttributes,\n FaaSAttributes,\n FeatureFlagAttributes,\n MessagingAttributes,\n GenAIAttributes,\n RPCAttributes,\n GraphQLAttributes,\n OTelAttributes,\n CodeAttributes,\n TLSAttributes,\n} from './registry';\n\nimport type {\n UserAttrs,\n SessionAttrs,\n DeviceAttrs,\n HTTPServerAttrs,\n HTTPClientAttrs,\n DBAttrs,\n ServiceAttrs,\n NetworkAttrs,\n ErrorAttrs,\n MessagingAttrs,\n CloudAttrs,\n ServerAddressAttrs,\n URLAttrs,\n ProcessAttrs,\n ContainerAttrs,\n ExceptionAttrs,\n} from './types';\n\nexport const attrs = {\n user: {\n id: (value: string) => ({ [UserAttributes.id]: value }),\n email: (value: string) => ({ [UserAttributes.email]: value }),\n name: (value: string) => ({ [UserAttributes.name]: value }),\n fullName: (value: string) => ({ [UserAttributes.fullName]: value }),\n hash: (value: string) => ({ [UserAttributes.hash]: value }),\n roles: (value: string[]) => ({ [UserAttributes.roles]: value }),\n\n data: (data: UserAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.id !== undefined) result[UserAttributes.id] = data.id;\n if (data.email !== undefined) result[UserAttributes.email] = data.email;\n if (data.name !== undefined) result[UserAttributes.name] = data.name;\n if (data.fullName !== undefined)\n result[UserAttributes.fullName] = data.fullName;\n if (data.hash !== undefined) result[UserAttributes.hash] = data.hash;\n if (data.roles !== undefined) result[UserAttributes.roles] = data.roles;\n return result;\n },\n },\n\n session: {\n id: (value: string) => ({ [SessionAttributes.id]: value }),\n previousId: (value: string) => ({ [SessionAttributes.previousId]: value }),\n\n data: (data: SessionAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.id !== undefined) result[SessionAttributes.id] = data.id;\n if (data.previousId !== undefined)\n result[SessionAttributes.previousId] = data.previousId;\n return result;\n },\n },\n\n device: {\n id: (value: string) => ({ [DeviceAttributes.id]: value }),\n manufacturer: (value: string) => ({\n [DeviceAttributes.manufacturer]: value,\n }),\n modelIdentifier: (value: string) => ({\n [DeviceAttributes.modelIdentifier]: value,\n }),\n modelName: (value: string) => ({ [DeviceAttributes.modelName]: value }),\n\n data: (data: DeviceAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.id !== undefined) result[DeviceAttributes.id] = data.id;\n if (data.manufacturer !== undefined)\n result[DeviceAttributes.manufacturer] = data.manufacturer;\n if (data.modelIdentifier !== undefined)\n result[DeviceAttributes.modelIdentifier] = data.modelIdentifier;\n if (data.modelName !== undefined)\n result[DeviceAttributes.modelName] = data.modelName;\n return result;\n },\n },\n\n http: {\n request: {\n method: (value: string) => ({ [HTTPAttributes.requestMethod]: value }),\n methodOriginal: (value: string) => ({\n [HTTPAttributes.requestMethodOriginal]: value,\n }),\n resendCount: (value: number) => ({\n [HTTPAttributes.requestResendCount]: value,\n }),\n size: (value: number) => ({ [HTTPAttributes.requestSize]: value }),\n bodySize: (value: number) => ({\n [HTTPAttributes.requestBodySize]: value,\n }),\n },\n\n response: {\n statusCode: (value: number) => ({\n [HTTPAttributes.responseStatusCode]: value,\n }),\n size: (value: number) => ({ [HTTPAttributes.responseSize]: value }),\n bodySize: (value: number) => ({\n [HTTPAttributes.responseBodySize]: value,\n }),\n },\n\n route: (value: string) => ({ [HTTPAttributes.route]: value }),\n connectionState: (value: string) => ({\n [HTTPAttributes.connectionState]: value,\n }),\n\n server: (data: HTTPServerAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.method !== undefined)\n result[HTTPAttributes.requestMethod] = data.method;\n if (data.route !== undefined) result[HTTPAttributes.route] = data.route;\n if (data.statusCode !== undefined)\n result[HTTPAttributes.responseStatusCode] = data.statusCode;\n if (data.bodySize !== undefined)\n result[HTTPAttributes.requestBodySize] = data.bodySize;\n if (data.requestSize !== undefined)\n result[HTTPAttributes.requestSize] = data.requestSize;\n if (data.responseSize !== undefined)\n result[HTTPAttributes.responseSize] = data.responseSize;\n if (data.resendCount !== undefined)\n result[HTTPAttributes.requestResendCount] = data.resendCount;\n return result;\n },\n\n client: (data: HTTPClientAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.method !== undefined)\n result[HTTPAttributes.requestMethod] = data.method;\n if (data.url !== undefined) result[HTTPAttributes.route] = data.url;\n if (data.statusCode !== undefined)\n result[HTTPAttributes.responseStatusCode] = data.statusCode;\n return result;\n },\n },\n\n db: {\n client: {\n system: (value: string) => ({ [DBAttributes.systemName]: value }),\n operation: (value: string) => ({ [DBAttributes.operationName]: value }),\n collectionName: (value: string) => ({\n [DBAttributes.collectionName]: value,\n }),\n namespace: (value: string) => ({ [DBAttributes.namespace]: value }),\n statement: (value: string) => ({ [DBAttributes.statement]: value }),\n querySummary: (value: string) => ({ [DBAttributes.querySummary]: value }),\n queryText: (value: string) => ({ [DBAttributes.queryText]: value }),\n responseStatus: (value: string | number) => ({\n [DBAttributes.responseStatusCode]: value,\n }),\n rowsReturned: (value: number) => ({\n [DBAttributes.responseReturnedRows]: value,\n }),\n\n data: (data: DBAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.system !== undefined)\n result[DBAttributes.systemName] = data.system;\n if (data.operation !== undefined)\n result[DBAttributes.operationName] = data.operation;\n if (data.collectionName !== undefined)\n result[DBAttributes.collectionName] = data.collectionName;\n // 'name' maps to db.namespace (db.name is deprecated per OTel semantic conventions)\n if (data.name !== undefined) result[DBAttributes.namespace] = data.name;\n // 'namespace' takes precedence over 'name' if both are provided\n if (data.namespace !== undefined)\n result[DBAttributes.namespace] = data.namespace;\n if (data.statement !== undefined)\n result[DBAttributes.statement] = data.statement;\n if (data.querySummary !== undefined)\n result[DBAttributes.querySummary] = data.querySummary;\n if (data.queryText !== undefined)\n result[DBAttributes.queryText] = data.queryText;\n if (data.responseStatus !== undefined)\n result[DBAttributes.responseStatusCode] = data.responseStatus;\n if (data.rowsReturned !== undefined)\n result[DBAttributes.responseReturnedRows] = data.rowsReturned;\n return result;\n },\n },\n },\n\n service: {\n name: (value: string) => ({ [ServiceAttributes.name]: value }),\n instance: (value: string) => ({ [ServiceAttributes.instance]: value }),\n version: (value: string) => ({ [ServiceAttributes.version]: value }),\n\n data: (data: ServiceAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.name !== undefined) result[ServiceAttributes.name] = data.name;\n if (data.instance !== undefined)\n result[ServiceAttributes.instance] = data.instance;\n if (data.version !== undefined)\n result[ServiceAttributes.version] = data.version;\n return result;\n },\n },\n\n network: {\n peerAddress: (value: string) => ({\n [NetworkAttributes.peerAddress]: value,\n }),\n peerPort: (value: number) => ({ [NetworkAttributes.peerPort]: value }),\n transport: (value: string) => ({ [NetworkAttributes.transport]: value }),\n protocolName: (value: string) => ({\n [NetworkAttributes.protocolName]: value,\n }),\n protocolVersion: (value: string) => ({\n [NetworkAttributes.protocolVersion]: value,\n }),\n\n data: (data: NetworkAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.peerAddress !== undefined)\n result[NetworkAttributes.peerAddress] = data.peerAddress;\n if (data.peerPort !== undefined)\n result[NetworkAttributes.peerPort] = data.peerPort;\n if (data.transport !== undefined)\n result[NetworkAttributes.transport] = data.transport;\n if (data.protocolName !== undefined)\n result[NetworkAttributes.protocolName] = data.protocolName;\n if (data.protocolVersion !== undefined)\n result[NetworkAttributes.protocolVersion] = data.protocolVersion;\n return result;\n },\n },\n\n server: {\n address: (value: string) => ({ [ServerAddressAttributes.address]: value }),\n port: (value: number) => ({ [ServerAddressAttributes.port]: value }),\n socketAddress: (value: string) => ({\n [ServerAddressAttributes.socketAddress]: value,\n }),\n\n data: (data: ServerAddressAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.address !== undefined)\n result[ServerAddressAttributes.address] = data.address;\n if (data.port !== undefined)\n result[ServerAddressAttributes.port] = data.port;\n if (data.socketAddress !== undefined)\n result[ServerAddressAttributes.socketAddress] = data.socketAddress;\n return result;\n },\n },\n\n url: {\n scheme: (value: string) => ({ [URLAttributes.scheme]: value }),\n full: (value: string) => ({ [URLAttributes.full]: value }),\n path: (value: string) => ({ [URLAttributes.path]: value }),\n query: (value: string) => ({ [URLAttributes.query]: value }),\n fragment: (value: string) => ({ [URLAttributes.fragment]: value }),\n\n data: (data: URLAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.scheme !== undefined) result[URLAttributes.scheme] = data.scheme;\n if (data.full !== undefined) result[URLAttributes.full] = data.full;\n if (data.path !== undefined) result[URLAttributes.path] = data.path;\n if (data.query !== undefined) result[URLAttributes.query] = data.query;\n if (data.fragment !== undefined)\n result[URLAttributes.fragment] = data.fragment;\n return result;\n },\n },\n\n error: {\n type: (value: string) => ({ [ErrorAttributes.type]: value }),\n message: (value: string) => ({ [ErrorAttributes.message]: value }),\n stackTrace: (value: string) => ({ [ErrorAttributes.stackTrace]: value }),\n code: (value: string | number) => ({ [ErrorAttributes.code]: value }),\n\n data: (data: ErrorAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.type !== undefined) result[ErrorAttributes.type] = data.type;\n if (data.message !== undefined)\n result[ErrorAttributes.message] = data.message;\n if (data.stackTrace !== undefined)\n result[ErrorAttributes.stackTrace] = data.stackTrace;\n if (data.code !== undefined) result[ErrorAttributes.code] = data.code;\n return result;\n },\n },\n\n exception: {\n escaped: (value: boolean) => ({ [ExceptionAttributes.escaped]: value }),\n message: (value: string) => ({ [ExceptionAttributes.message]: value }),\n stackTrace: (value: string) => ({\n [ExceptionAttributes.stackTrace]: value,\n }),\n type: (value: string) => ({ [ExceptionAttributes.type]: value }),\n moduleName: (value: string) => ({\n [ExceptionAttributes.moduleName]: value,\n }),\n\n data: (data: ExceptionAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.escaped !== undefined)\n result[ExceptionAttributes.escaped] = data.escaped;\n if (data.message !== undefined)\n result[ExceptionAttributes.message] = data.message;\n if (data.stackTrace !== undefined)\n result[ExceptionAttributes.stackTrace] = data.stackTrace;\n if (data.type !== undefined) result[ExceptionAttributes.type] = data.type;\n if (data.moduleName !== undefined)\n result[ExceptionAttributes.moduleName] = data.moduleName;\n return result;\n },\n },\n\n process: {\n pid: (value: number) => ({ [ProcessAttributes.pid]: value }),\n executablePath: (value: string) => ({\n [ProcessAttributes.executablePath]: value,\n }),\n command: (value: string) => ({ [ProcessAttributes.command]: value }),\n owner: (value: string) => ({ [ProcessAttributes.owner]: value }),\n\n data: (data: ProcessAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.pid !== undefined) result[ProcessAttributes.pid] = data.pid;\n if (data.executablePath !== undefined)\n result[ProcessAttributes.executablePath] = data.executablePath;\n if (data.command !== undefined)\n result[ProcessAttributes.command] = data.command;\n if (data.owner !== undefined)\n result[ProcessAttributes.owner] = data.owner;\n return result;\n },\n },\n\n thread: {\n id: (value: number) => ({ [ThreadAttributes.id]: value }),\n name: (value: string) => ({ [ThreadAttributes.name]: value }),\n },\n\n container: {\n id: (value: string) => ({ [ContainerAttributes.id]: value }),\n name: (value: string) => ({ [ContainerAttributes.name]: value }),\n image: (value: string) => ({ [ContainerAttributes.image]: value }),\n tag: (value: string) => ({ [ContainerAttributes.tag]: value }),\n\n data: (data: ContainerAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.id !== undefined) result[ContainerAttributes.id] = data.id;\n if (data.name !== undefined) result[ContainerAttributes.name] = data.name;\n if (data.image !== undefined)\n result[ContainerAttributes.image] = data.image;\n if (data.tag !== undefined) result[ContainerAttributes.tag] = data.tag;\n return result;\n },\n },\n\n k8s: {\n podName: (value: string) => ({ [K8sAttributes.podName]: value }),\n namespaceName: (value: string) => ({\n [K8sAttributes.namespaceName]: value,\n }),\n deploymentName: (value: string) => ({\n [K8sAttributes.deploymentName]: value,\n }),\n state: (value: string) => ({ [K8sAttributes.state]: value }),\n },\n\n cloud: {\n provider: (value: string) => ({ [CloudAttributes.provider]: value }),\n accountId: (value: string) => ({ [CloudAttributes.accountId]: value }),\n region: (value: string) => ({ [CloudAttributes.region]: value }),\n availabilityZone: (value: string) => ({\n [CloudAttributes.availabilityZone]: value,\n }),\n platform: (value: string) => ({ [CloudAttributes.platform]: value }),\n\n data: (data: CloudAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.provider !== undefined)\n result[CloudAttributes.provider] = data.provider;\n if (data.accountId !== undefined)\n result[CloudAttributes.accountId] = data.accountId;\n if (data.region !== undefined)\n result[CloudAttributes.region] = data.region;\n if (data.availabilityZone !== undefined)\n result[CloudAttributes.availabilityZone] = data.availabilityZone;\n if (data.platform !== undefined)\n result[CloudAttributes.platform] = data.platform;\n return result;\n },\n },\n\n faas: {\n name: (value: string) => ({ [FaaSAttributes.name]: value }),\n version: (value: string) => ({ [FaaSAttributes.version]: value }),\n instance: (value: string) => ({ [FaaSAttributes.instance]: value }),\n execution: (value: string) => ({ [FaaSAttributes.execution]: value }),\n coldstart: (value: boolean) => ({ [FaaSAttributes.coldstart]: value }),\n },\n\n featureFlag: {\n key: (value: string) => ({ [FeatureFlagAttributes.key]: value }),\n provider: (value: string) => ({ [FeatureFlagAttributes.provider]: value }),\n variant: (value: string) => ({ [FeatureFlagAttributes.variant]: value }),\n },\n\n messaging: {\n system: (value: string) => ({ [MessagingAttributes.system]: value }),\n destination: (value: string) => ({\n [MessagingAttributes.destination]: value,\n }),\n operation: (value: 'publish' | 'receive' | 'process') => ({\n [MessagingAttributes.operation]: value,\n }),\n messageId: (value: string) => ({ [MessagingAttributes.messageId]: value }),\n conversationId: (value: string) => ({\n [MessagingAttributes.conversationId]: value,\n }),\n\n data: (data: MessagingAttrs) => {\n const result: Record<string, unknown> = {};\n if (data.system !== undefined)\n result[MessagingAttributes.system] = data.system;\n if (data.destination !== undefined)\n result[MessagingAttributes.destination] = data.destination;\n if (data.operation !== undefined)\n result[MessagingAttributes.operation] = data.operation;\n if (data.messageId !== undefined)\n result[MessagingAttributes.messageId] = data.messageId;\n if (data.conversationId !== undefined)\n result[MessagingAttributes.conversationId] = data.conversationId;\n return result;\n },\n },\n\n genAI: {\n system: (value: string) => ({ [GenAIAttributes.system]: value }),\n requestModel: (value: string) => ({\n [GenAIAttributes.requestModel]: value,\n }),\n responseModel: (value: string) => ({\n [GenAIAttributes.responseModel]: value,\n }),\n operationName: (value: 'chat' | 'completion' | 'embedding') => ({\n [GenAIAttributes.operationName]: value,\n }),\n usagePromptTokens: (value: number) => ({\n [GenAIAttributes.usagePromptTokens]: value,\n }),\n usageCompletionTokens: (value: number) => ({\n [GenAIAttributes.usageCompletionTokens]: value,\n }),\n provider: (value: string) => ({ [GenAIAttributes.provider]: value }),\n },\n\n rpc: {\n system: (value: string) => ({ [RPCAttributes.system]: value }),\n service: (value: string) => ({ [RPCAttributes.service]: value }),\n method: (value: string) => ({ [RPCAttributes.method]: value }),\n grpcStatusCode: (value: number) => ({\n [RPCAttributes.grpcStatusCode]: value,\n }),\n },\n\n graphql: {\n document: (value: string) => ({ [GraphQLAttributes.document]: value }),\n operationName: (value: string) => ({\n [GraphQLAttributes.operationName]: value,\n }),\n operationType: (value: 'query' | 'mutation' | 'subscription') => ({\n [GraphQLAttributes.operationType]: value,\n }),\n },\n\n otel: {\n libraryName: (value: string) => ({ [OTelAttributes.libraryName]: value }),\n libraryVersion: (value: string) => ({\n [OTelAttributes.libraryVersion]: value,\n }),\n statusCode: (value: string) => ({ [OTelAttributes.statusCode]: value }),\n },\n\n code: {\n namespace: (value: string) => ({ [CodeAttributes.namespace]: value }),\n filepath: (value: string) => ({ [CodeAttributes.filepath]: value }),\n function: (value: string) => ({ [CodeAttributes.function]: value }),\n class: (value: string) => ({ [CodeAttributes.class]: value }),\n method: (value: string) => ({ [CodeAttributes.method]: value }),\n column: (value: string) => ({ [CodeAttributes.column]: value }),\n lineNumber: (value: number) => ({ [CodeAttributes.lineNumber]: value }),\n repository: (value: string) => ({ [CodeAttributes.repository]: value }),\n revision: (value: string) => ({ [CodeAttributes.revision]: value }),\n },\n\n tls: {\n protocolVersion: (value: string) => ({\n [TLSAttributes.protocolVersion]: value,\n }),\n cipher: (value: string) => ({ [TLSAttributes.cipher]: value }),\n curveName: (value: string) => ({ [TLSAttributes.curveName]: value }),\n resumed: (value: boolean) => ({ [TLSAttributes.resumed]: value }),\n },\n} as const;\n","/**\n * Attribute validation, PII detection, and guardrails\n * Provides safe-by-default attribute handling with configurable policies\n */\n\nimport { REDACTOR_PATTERNS } from '../attribute-redacting-processor';\n\nexport interface AttributeGuardrails {\n /** How to handle PII in attributes */\n pii?: 'allow' | 'redact' | 'hash' | 'block';\n\n /** Maximum length for attribute values */\n maxLength?: number;\n\n /** Validate enum values against known values */\n validateEnum?: boolean;\n\n /** Log warnings for deprecated attributes instead of throwing */\n warnDeprecated?: boolean;\n\n /** Custom deprecation warnings */\n deprecatedWarnings?: Record<string, string>;\n}\n\nexport interface AttributePolicy {\n guardrails?: AttributeGuardrails;\n /** Custom deprecation warnings for specific attributes */\n deprecatedWarnings?: Record<string, string>;\n}\n\nconst DEPRECATED_ATTRIBUTES = {\n 'enduser.id': 'user.id',\n 'enduser.role': 'user.roles',\n 'enduser.scope': undefined,\n 'http.method': 'http.request.method',\n 'http.host': 'server.address',\n 'http.status_code': 'http.response.status_code',\n 'http.target': 'url.path',\n 'http.url': 'url.full',\n 'http.user_agent': 'user_agent.original',\n 'http.flavor': 'network.protocol.name',\n 'http.scheme': 'url.scheme',\n 'http.server_name': 'server.address',\n 'db.name': 'db.namespace',\n 'db.operation': 'db.operation.name',\n 'db.statement': 'db.query.text',\n 'db.system': 'db.system.name',\n 'db.collection': 'db.collection.name',\n 'db.instance.id': undefined,\n 'db.jdbc.driver_classname': undefined,\n 'db.mssql.instance_name': 'mssql.instance.name',\n 'db.sql.table': 'db.collection.name',\n 'http.client_ip': 'client.address',\n 'user_agent.original': 'user_agent.original',\n} as const;\n\nconst HTTP_METHODS = new Set([\n 'GET',\n 'POST',\n 'PUT',\n 'DELETE',\n 'PATCH',\n 'HEAD',\n 'OPTIONS',\n 'TRACE',\n 'QUERY',\n '_OTHER',\n]);\n\nexport function validateAttribute(\n key: string,\n value: unknown,\n policy: AttributePolicy = {},\n): unknown {\n const { guardrails = {} } = policy;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n // For non-string values that don't need transformation, preserve the original type\n if (typeof value !== 'string') {\n // PII checks only apply to strings\n // maxLength only applies to strings\n // validateEnum only applies to strings\n return value;\n }\n\n const stringValue = value;\n\n if (guardrails.pii) {\n const piiResult = applyPIIPolicy(key, stringValue, guardrails.pii);\n if (piiResult !== stringValue) {\n return piiResult;\n }\n }\n\n if (guardrails.maxLength && stringValue.length > guardrails.maxLength) {\n return truncateValue(key, stringValue, guardrails.maxLength);\n }\n\n if (guardrails.validateEnum && HTTP_METHODS.has(stringValue)) {\n const normalizedMethod = normalizeHTTPMethod(stringValue);\n if (normalizedMethod !== stringValue) {\n return normalizedMethod;\n }\n }\n\n return stringValue;\n}\n\nfunction applyPIIPolicy(\n key: string,\n value: string,\n pii: AttributeGuardrails['pii'],\n): string {\n if (pii === 'allow') {\n return value;\n }\n\n if (pii === 'redact') {\n return redactIfPII(key, value);\n }\n\n if (pii === 'hash') {\n return hashIfPII(key, value);\n }\n\n if (pii === 'block' && isPIIKey(key)) {\n throw new Error(\n `PII attribute \"${key}\" is blocked by guardrails. Use pii: \"allow\" to enable it.`,\n );\n }\n\n return value;\n}\n\nfunction isPIIKey(key: string): boolean {\n const piiKeyPatterns = [\n 'email',\n 'phone',\n 'ssn',\n 'credit_card',\n 'password',\n 'secret',\n 'token',\n 'api_key',\n 'authorization',\n ];\n const lowerKey = key.toLowerCase();\n return piiKeyPatterns.some((pattern) => lowerKey.includes(pattern));\n}\n\nfunction redactIfPII(key: string, value: string): string {\n if (isPIIKey(key)) {\n // REDACTOR_PATTERNS values are RegExp patterns\n for (const [, pattern] of Object.entries(REDACTOR_PATTERNS)) {\n if (pattern instanceof RegExp && pattern.test(value)) {\n return '[REDACTED]';\n }\n }\n // If no pattern matched but key is PII, still redact\n return '[REDACTED]';\n }\n return value;\n}\n\nfunction hashIfPII(key: string, value: string): string {\n if (!isPIIKey(key)) {\n return value;\n }\n\n // Use a simple but consistent hash that produces 32-char hex\n // FNV-1a hash variant producing 128-bit output (32 hex chars)\n const FNV_PRIME = 0x01_00_01_93;\n const FNV_OFFSET = 0x81_1c_9d_c5;\n\n // Generate 4 32-bit hashes to produce 32 hex chars\n const hashes: number[] = [];\n for (let round = 0; round < 4; round++) {\n let hash = FNV_OFFSET;\n for (let i = 0; i < value.length; i++) {\n hash ^= (value.codePointAt(i) ?? 0) + round;\n hash = Math.imul(hash, FNV_PRIME);\n }\n hashes.push(hash >>> 0); // Convert to unsigned\n }\n\n return `hash_${hashes.map((h) => h.toString(16).padStart(8, '0')).join('')}`;\n}\n\nfunction truncateValue(key: string, value: string, maxLength: number): string {\n if (value.length <= maxLength) {\n return value;\n }\n return value.slice(0, maxLength - 3) + '...';\n}\n\nfunction normalizeHTTPMethod(method: string): string {\n const upper = method.toUpperCase();\n if (HTTP_METHODS.has(upper)) {\n return upper;\n }\n return upper;\n}\n\nexport function checkDeprecatedAttribute(\n key: string,\n policy: AttributePolicy = {},\n): string | null {\n const { guardrails = {}, deprecatedWarnings = {} } = policy;\n const { warnDeprecated = true } = guardrails;\n\n if (!warnDeprecated) {\n return null;\n }\n\n // Check if the key exists in the deprecated attributes map\n const isDeprecated = key in DEPRECATED_ATTRIBUTES;\n if (isDeprecated) {\n const replacement =\n DEPRECATED_ATTRIBUTES[key as keyof typeof DEPRECATED_ATTRIBUTES];\n if (replacement === undefined) {\n // Deprecated with no replacement (e.g., enduser.scope)\n console.warn(\n `[autotel/attributes] Attribute \"${key}\" is deprecated and has no replacement. ` +\n `Remove or find a replacement in OpenTelemetry semantic conventions.`,\n );\n } else {\n // Deprecated with a known replacement\n console.warn(\n `[autotel/attributes] Attribute \"${key}\" is deprecated. Use \"${replacement}\" instead.`,\n );\n }\n }\n\n if (deprecatedWarnings[key]) {\n console.warn(`[autotel/attributes] ${deprecatedWarnings[key]}`);\n }\n\n const replacement =\n DEPRECATED_ATTRIBUTES[key as keyof typeof DEPRECATED_ATTRIBUTES];\n return replacement ?? null;\n}\n\nexport function autoRedactPII(\n attributes: Record<string, unknown>,\n policy: AttributePolicy = {},\n): Record<string, unknown> {\n const { guardrails = { pii: 'redact' } } = policy;\n\n const redacted: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(attributes)) {\n redacted[key] = validateAttribute(key, value, { guardrails });\n }\n return redacted;\n}\n\nexport function defaultGuardrails(): AttributeGuardrails {\n return {\n pii: 'redact',\n maxLength: 255,\n validateEnum: true,\n warnDeprecated: true,\n };\n}\n","/**\n * Attribute utility functions\n */\n\nimport type { AttributeValue } from '../trace-context';\nimport {\n validateAttribute,\n autoRedactPII,\n defaultGuardrails,\n checkDeprecatedAttribute,\n type AttributePolicy,\n} from './validators';\n\n// Type for objects that have setAttributes method (spans or contexts)\n// Using a generic parameter to accommodate different AttributeValue types\ntype AttributeSetter = {\n setAttributes: (attrs: Record<string, AttributeValue>) => void;\n};\n\nexport function mergeAttrs(\n ...attrSets: Array<Record<string, unknown> | undefined>\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const attrSet of attrSets) {\n if (attrSet) {\n Object.assign(result, attrSet);\n }\n }\n return result;\n}\n\nexport function safeSetAttributes(\n span: AttributeSetter,\n attrs: Record<string, unknown>,\n policy?: AttributePolicy,\n): void {\n // Merge user-supplied guardrails with defaults so callers can tweak\n // a single option without opting out of the rest\n const mergedGuardrails = {\n ...defaultGuardrails(),\n ...policy?.guardrails,\n };\n const effectivePolicy: AttributePolicy = {\n ...policy,\n guardrails: mergedGuardrails,\n };\n\n const validated = autoRedactPII(attrs, effectivePolicy);\n\n const sanitizedAttrs: Record<string, AttributeValue> = {};\n for (const [key, value] of Object.entries(validated)) {\n if (value !== undefined) {\n // Check for deprecated attributes and log warnings\n checkDeprecatedAttribute(key, effectivePolicy);\n const validatedValue = validateAttribute(key, value, effectivePolicy);\n if (validatedValue !== undefined) {\n // Cast to AttributeValue since validateAttribute ensures valid types\n sanitizedAttrs[key] = validatedValue as AttributeValue;\n }\n }\n }\n\n span.setAttributes(sanitizedAttrs);\n}\n","/**\n * Signal attachment helpers\n * These functions know WHERE to attach attributes automatically\n * They handle span, resource, and log signals correctly\n */\n\nimport type { Span, Attributes } from '@opentelemetry/api';\nimport {\n resourceFromAttributes,\n type Resource,\n} from '@opentelemetry/resources';\nimport type { TraceContext } from '../trace-context';\nimport { attrs } from './builders';\nimport { safeSetAttributes } from './utils';\n\nexport function setUser(\n spanOrContext: Span | TraceContext,\n data: import('./types').UserAttrs,\n guardrails?: import('./validators').AttributePolicy,\n): void {\n const attributes = attrs.user.data(data);\n safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\nexport function setSession(\n spanOrContext: Span | TraceContext,\n data: import('./types').SessionAttrs,\n guardrails?: import('./validators').AttributePolicy,\n): void {\n const attributes = attrs.session.data(data);\n safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\nexport function setDevice(\n spanOrContext: Span | TraceContext,\n data: import('./types').DeviceAttrs,\n guardrails?: import('./validators').AttributePolicy,\n): void {\n const attributes = attrs.device.data(data);\n safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\nexport function httpServer(\n spanOrContext: Span | TraceContext,\n data: import('./types').HTTPServerAttrs,\n guardrails?: import('./validators').AttributePolicy,\n): void {\n const attributes = attrs.http.server(data);\n\n if ('updateName' in spanOrContext && data.method && data.route) {\n const span = spanOrContext as Span;\n span.updateName(`HTTP ${data.method} ${data.route}`);\n }\n\n safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\nexport function httpClient(\n spanOrContext: Span | TraceContext,\n data: import('./types').HTTPClientAttrs,\n guardrails?: import('./validators').AttributePolicy,\n): void {\n const attributes = attrs.http.client(data);\n safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\nexport function dbClient(\n spanOrContext: Span | TraceContext,\n data: import('./types').DBAttrs,\n guardrails?: import('./validators').AttributePolicy,\n): void {\n const attributes = attrs.db.client.data(data);\n safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\n/**\n * Merge service attributes into a Resource and return a new Resource.\n *\n * Resource.attributes is readonly, so this function returns a new merged\n * Resource rather than mutating the input.\n *\n * @param resource - The existing resource to merge with\n * @param data - Service attributes to add\n * @returns A new Resource with the merged attributes\n *\n * @example\n * ```typescript\n * const baseResource = Resource.default();\n * const enrichedResource = mergeServiceResource(baseResource, {\n * name: 'my-service',\n * version: '1.0.0',\n * });\n * ```\n */\nexport function mergeServiceResource(\n resource: Resource,\n data: import('./types').ServiceAttrs,\n): Resource {\n const attributes = attrs.service.data(data);\n return resource.merge(resourceFromAttributes(attributes as Attributes));\n}\n\nexport function identify(\n spanOrContext: Span | TraceContext,\n data: {\n user?: import('./types').UserAttrs;\n session?: import('./types').SessionAttrs;\n device?: import('./types').DeviceAttrs;\n },\n guardrails?: import('./validators').AttributePolicy,\n): void {\n const allAttrs = [];\n\n if (data.user) {\n allAttrs.push(attrs.user.data(data.user));\n }\n if (data.session) {\n allAttrs.push(attrs.session.data(data.session));\n }\n if (data.device) {\n allAttrs.push(attrs.device.data(data.device));\n }\n\n const merged: Record<string, unknown> = {};\n for (const attrSet of allAttrs) {\n Object.assign(merged, attrSet);\n }\n\n safeSetAttributes(spanOrContext, merged, guardrails);\n}\n\nexport function request(\n spanOrContext: Span | TraceContext,\n data: import('./types').HTTPServerAttrs & {\n clientIp?: string;\n },\n guardrails?: import('./validators').AttributePolicy,\n): void {\n const httpAttrs = attrs.http.server(data);\n const networkAttrs = attrs.network.peerAddress(data.clientIp || '');\n const merged = { ...httpAttrs, ...networkAttrs };\n safeSetAttributes(spanOrContext, merged, guardrails);\n}\n\nexport function setError(\n spanOrContext: Span | TraceContext,\n data: import('./types').ErrorAttrs,\n guardrails?: import('./validators').AttributePolicy,\n): void {\n const attributes = attrs.error.data(data);\n safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\nexport function setException(\n spanOrContext: Span | TraceContext,\n data: import('./types').ExceptionAttrs,\n guardrails?: import('./validators').AttributePolicy,\n): void {\n const attributes = attrs.exception.data(data);\n safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n","/**\n * Domain helpers for common attribute patterns\n * These bundle multiple attribute groups into semantic helpers\n */\n\nimport { attrs } from './builders';\nimport { safeSetAttributes } from './utils';\n\nexport function transaction(\n spanOrContext: import('../trace-context').TraceContext,\n config: {\n user?: import('./types').UserAttrs;\n session?: import('./types').SessionAttrs;\n method?: string;\n route?: string;\n statusCode?: number;\n clientIp?: string;\n },\n guardrails?: import('./validators').AttributePolicy,\n): void {\n const userAttrs = attrs.user.data(config.user || {});\n const sessionAttrs = attrs.session.data(config.session || {});\n const httpAttrs = attrs.http.server({\n method: config.method,\n route: config.route,\n statusCode: config.statusCode,\n });\n const networkAttrs = attrs.network.peerAddress(config.clientIp || '');\n\n const merged = {\n ...userAttrs,\n ...sessionAttrs,\n ...httpAttrs,\n ...networkAttrs,\n };\n\n if (config.method && config.route && 'updateName' in spanOrContext) {\n spanOrContext.updateName(`HTTP ${config.method} ${config.route}`);\n }\n\n safeSetAttributes(spanOrContext, merged, guardrails);\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- require('./chunk-DWRTSOGR.cjs');
3
+ require('./chunk-XI5WPVR5.cjs');
4
4
  var chunkW4EUTSB2_cjs = require('./chunk-W4EUTSB2.cjs');
5
5
  require('./chunk-5PZZHX4Y.cjs');
6
6
  require('./chunk-D5LMF53P.cjs');
@@ -1,4 +1,4 @@
1
- import './chunk-QP5LVD4L.js';
1
+ import './chunk-G47ZCJGW.js';
2
2
  import { createTraceContext } from './chunk-SR35DG5A.js';
3
3
  import './chunk-HJPXNUZR.js';
4
4
  import './chunk-WD4RP6IV.js';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkDWRTSOGR_cjs = require('./chunk-DWRTSOGR.cjs');
3
+ var chunkXI5WPVR5_cjs = require('./chunk-XI5WPVR5.cjs');
4
4
  require('./chunk-W4EUTSB2.cjs');
5
5
  require('./chunk-5PZZHX4Y.cjs');
6
6
  require('./chunk-D5LMF53P.cjs');
@@ -24,31 +24,31 @@ require('./chunk-JEQ2X3Z6.cjs');
24
24
 
25
25
  Object.defineProperty(exports, "ctx", {
26
26
  enumerable: true,
27
- get: function () { return chunkDWRTSOGR_cjs.ctx; }
27
+ get: function () { return chunkXI5WPVR5_cjs.ctx; }
28
28
  });
29
29
  Object.defineProperty(exports, "instrument", {
30
30
  enumerable: true,
31
- get: function () { return chunkDWRTSOGR_cjs.instrument; }
31
+ get: function () { return chunkXI5WPVR5_cjs.instrument; }
32
32
  });
33
33
  Object.defineProperty(exports, "span", {
34
34
  enumerable: true,
35
- get: function () { return chunkDWRTSOGR_cjs.span; }
35
+ get: function () { return chunkXI5WPVR5_cjs.span; }
36
36
  });
37
37
  Object.defineProperty(exports, "trace", {
38
38
  enumerable: true,
39
- get: function () { return chunkDWRTSOGR_cjs.trace; }
39
+ get: function () { return chunkXI5WPVR5_cjs.trace; }
40
40
  });
41
41
  Object.defineProperty(exports, "withBaggage", {
42
42
  enumerable: true,
43
- get: function () { return chunkDWRTSOGR_cjs.withBaggage; }
43
+ get: function () { return chunkXI5WPVR5_cjs.withBaggage; }
44
44
  });
45
45
  Object.defineProperty(exports, "withNewContext", {
46
46
  enumerable: true,
47
- get: function () { return chunkDWRTSOGR_cjs.withNewContext; }
47
+ get: function () { return chunkXI5WPVR5_cjs.withNewContext; }
48
48
  });
49
49
  Object.defineProperty(exports, "withTracing", {
50
50
  enumerable: true,
51
- get: function () { return chunkDWRTSOGR_cjs.withTracing; }
51
+ get: function () { return chunkXI5WPVR5_cjs.withTracing; }
52
52
  });
53
53
  //# sourceMappingURL=functional.cjs.map
54
54
  //# sourceMappingURL=functional.cjs.map
@@ -1,4 +1,4 @@
1
- export { ctx, instrument, span, trace, withBaggage, withNewContext, withTracing } from './chunk-QP5LVD4L.js';
1
+ export { ctx, instrument, span, trace, withBaggage, withNewContext, withTracing } from './chunk-G47ZCJGW.js';
2
2
  import './chunk-SR35DG5A.js';
3
3
  import './chunk-HJPXNUZR.js';
4
4
  import './chunk-WD4RP6IV.js';
package/dist/index.cjs CHANGED
@@ -1,14 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var chunkHZ23L5KR_cjs = require('./chunk-HZ23L5KR.cjs');
4
- var chunk7F4PDILZ_cjs = require('./chunk-7F4PDILZ.cjs');
5
- var chunkNWT5SYOX_cjs = require('./chunk-NWT5SYOX.cjs');
3
+ var chunkLGT7XA5O_cjs = require('./chunk-LGT7XA5O.cjs');
4
+ var chunkXRBP4RYL_cjs = require('./chunk-XRBP4RYL.cjs');
5
+ var chunk2ZKEORFN_cjs = require('./chunk-2ZKEORFN.cjs');
6
+ var chunkESMHTKLJ_cjs = require('./chunk-ESMHTKLJ.cjs');
7
+ var chunkBEVIAKTB_cjs = require('./chunk-BEVIAKTB.cjs');
6
8
  var chunkINJD3G4K_cjs = require('./chunk-INJD3G4K.cjs');
7
9
  var chunkTC5ZPWM4_cjs = require('./chunk-TC5ZPWM4.cjs');
8
10
  require('./chunk-YTXEZ4SD.cjs');
9
11
  var chunkWJH6IYU2_cjs = require('./chunk-WJH6IYU2.cjs');
10
- var chunk74L5DOB4_cjs = require('./chunk-74L5DOB4.cjs');
11
- var chunkDWRTSOGR_cjs = require('./chunk-DWRTSOGR.cjs');
12
+ var chunkXNBTEFRZ_cjs = require('./chunk-XNBTEFRZ.cjs');
13
+ var chunkXI5WPVR5_cjs = require('./chunk-XI5WPVR5.cjs');
12
14
  var chunkW4EUTSB2_cjs = require('./chunk-W4EUTSB2.cjs');
13
15
  var chunk5PZZHX4Y_cjs = require('./chunk-5PZZHX4Y.cjs');
14
16
  var chunk4UYR46UP_cjs = require('./chunk-4UYR46UP.cjs');
@@ -37,7 +39,7 @@ async function flush(options) {
37
39
  const timeout = options?.timeout ?? 2e3;
38
40
  const forShutdown = options?.forShutdown ?? false;
39
41
  const doFlush = async () => {
40
- const eventsQueue = chunkDWRTSOGR_cjs.getEventQueue();
42
+ const eventsQueue = chunkXI5WPVR5_cjs.getEventQueue();
41
43
  if (eventsQueue) {
42
44
  if (forShutdown) {
43
45
  await eventsQueue.shutdown();
@@ -119,13 +121,13 @@ async function shutdown() {
119
121
  logger.error({ err }, "[autotel] SDK shutdown failed");
120
122
  }
121
123
  } finally {
122
- const eventsQueue = chunkDWRTSOGR_cjs.getEventQueue();
124
+ const eventsQueue = chunkXI5WPVR5_cjs.getEventQueue();
123
125
  if (eventsQueue && typeof eventsQueue.cleanup === "function") {
124
126
  eventsQueue.cleanup();
125
127
  }
126
128
  chunk4UYR46UP_cjs.resetEvents();
127
129
  chunkTC5ZPWM4_cjs.resetMetrics();
128
- chunkDWRTSOGR_cjs.resetEventQueue();
130
+ chunkXI5WPVR5_cjs.resetEventQueue();
129
131
  }
130
132
  if (shutdownError) {
131
133
  throw shutdownError;
@@ -164,91 +166,111 @@ registerShutdownHooks();
164
166
 
165
167
  Object.defineProperty(exports, "getCurrentWorkflowContext", {
166
168
  enumerable: true,
167
- get: function () { return chunkHZ23L5KR_cjs.getCurrentWorkflowContext; }
169
+ get: function () { return chunkLGT7XA5O_cjs.getCurrentWorkflowContext; }
168
170
  });
169
171
  Object.defineProperty(exports, "isInWorkflow", {
170
172
  enumerable: true,
171
- get: function () { return chunkHZ23L5KR_cjs.isInWorkflow; }
173
+ get: function () { return chunkLGT7XA5O_cjs.isInWorkflow; }
172
174
  });
173
175
  Object.defineProperty(exports, "traceStep", {
174
176
  enumerable: true,
175
- get: function () { return chunkHZ23L5KR_cjs.traceStep; }
177
+ get: function () { return chunkLGT7XA5O_cjs.traceStep; }
176
178
  });
177
179
  Object.defineProperty(exports, "traceWorkflow", {
178
180
  enumerable: true,
179
- get: function () { return chunkHZ23L5KR_cjs.traceWorkflow; }
181
+ get: function () { return chunkLGT7XA5O_cjs.traceWorkflow; }
180
182
  });
181
183
  Object.defineProperty(exports, "attrs", {
182
184
  enumerable: true,
183
- get: function () { return chunk7F4PDILZ_cjs.attrs; }
185
+ get: function () { return chunkXRBP4RYL_cjs.attrs; }
184
186
  });
185
187
  Object.defineProperty(exports, "autoRedactPII", {
186
188
  enumerable: true,
187
- get: function () { return chunk7F4PDILZ_cjs.autoRedactPII; }
189
+ get: function () { return chunkXRBP4RYL_cjs.autoRedactPII; }
188
190
  });
189
191
  Object.defineProperty(exports, "dbClient", {
190
192
  enumerable: true,
191
- get: function () { return chunk7F4PDILZ_cjs.dbClient; }
193
+ get: function () { return chunkXRBP4RYL_cjs.dbClient; }
192
194
  });
193
195
  Object.defineProperty(exports, "httpClient", {
194
196
  enumerable: true,
195
- get: function () { return chunk7F4PDILZ_cjs.httpClient; }
197
+ get: function () { return chunkXRBP4RYL_cjs.httpClient; }
196
198
  });
197
199
  Object.defineProperty(exports, "httpServer", {
198
200
  enumerable: true,
199
- get: function () { return chunk7F4PDILZ_cjs.httpServer; }
201
+ get: function () { return chunkXRBP4RYL_cjs.httpServer; }
200
202
  });
201
203
  Object.defineProperty(exports, "identify", {
202
204
  enumerable: true,
203
- get: function () { return chunk7F4PDILZ_cjs.identify; }
205
+ get: function () { return chunkXRBP4RYL_cjs.identify; }
204
206
  });
205
207
  Object.defineProperty(exports, "mergeAttrs", {
206
208
  enumerable: true,
207
- get: function () { return chunk7F4PDILZ_cjs.mergeAttrs; }
209
+ get: function () { return chunkXRBP4RYL_cjs.mergeAttrs; }
208
210
  });
209
211
  Object.defineProperty(exports, "mergeServiceResource", {
210
212
  enumerable: true,
211
- get: function () { return chunk7F4PDILZ_cjs.mergeServiceResource; }
213
+ get: function () { return chunkXRBP4RYL_cjs.mergeServiceResource; }
212
214
  });
213
215
  Object.defineProperty(exports, "request", {
214
216
  enumerable: true,
215
- get: function () { return chunk7F4PDILZ_cjs.request; }
217
+ get: function () { return chunkXRBP4RYL_cjs.request; }
216
218
  });
217
219
  Object.defineProperty(exports, "safeSetAttributes", {
218
220
  enumerable: true,
219
- get: function () { return chunk7F4PDILZ_cjs.safeSetAttributes; }
221
+ get: function () { return chunkXRBP4RYL_cjs.safeSetAttributes; }
220
222
  });
221
223
  Object.defineProperty(exports, "setDevice", {
222
224
  enumerable: true,
223
- get: function () { return chunk7F4PDILZ_cjs.setDevice; }
225
+ get: function () { return chunkXRBP4RYL_cjs.setDevice; }
224
226
  });
225
227
  Object.defineProperty(exports, "setError", {
226
228
  enumerable: true,
227
- get: function () { return chunk7F4PDILZ_cjs.setError; }
229
+ get: function () { return chunkXRBP4RYL_cjs.setError; }
228
230
  });
229
231
  Object.defineProperty(exports, "setException", {
230
232
  enumerable: true,
231
- get: function () { return chunk7F4PDILZ_cjs.setException; }
233
+ get: function () { return chunkXRBP4RYL_cjs.setException; }
232
234
  });
233
235
  Object.defineProperty(exports, "setSession", {
234
236
  enumerable: true,
235
- get: function () { return chunk7F4PDILZ_cjs.setSession; }
237
+ get: function () { return chunkXRBP4RYL_cjs.setSession; }
236
238
  });
237
239
  Object.defineProperty(exports, "setUser", {
238
240
  enumerable: true,
239
- get: function () { return chunk7F4PDILZ_cjs.setUser; }
241
+ get: function () { return chunkXRBP4RYL_cjs.setUser; }
240
242
  });
241
243
  Object.defineProperty(exports, "validateAttribute", {
242
244
  enumerable: true,
243
- get: function () { return chunk7F4PDILZ_cjs.validateAttribute; }
245
+ get: function () { return chunkXRBP4RYL_cjs.validateAttribute; }
246
+ });
247
+ Object.defineProperty(exports, "httpRequestHeaderAttribute", {
248
+ enumerable: true,
249
+ get: function () { return chunk2ZKEORFN_cjs.httpRequestHeaderAttribute; }
250
+ });
251
+ Object.defineProperty(exports, "httpResponseHeaderAttribute", {
252
+ enumerable: true,
253
+ get: function () { return chunk2ZKEORFN_cjs.httpResponseHeaderAttribute; }
254
+ });
255
+ Object.defineProperty(exports, "HTTPAttributes", {
256
+ enumerable: true,
257
+ get: function () { return chunkESMHTKLJ_cjs.HTTPAttributes; }
258
+ });
259
+ Object.defineProperty(exports, "ServiceAttributes", {
260
+ enumerable: true,
261
+ get: function () { return chunkESMHTKLJ_cjs.ServiceAttributes; }
262
+ });
263
+ Object.defineProperty(exports, "URLAttributes", {
264
+ enumerable: true,
265
+ get: function () { return chunkESMHTKLJ_cjs.URLAttributes; }
244
266
  });
245
267
  Object.defineProperty(exports, "traceConsumer", {
246
268
  enumerable: true,
247
- get: function () { return chunkNWT5SYOX_cjs.traceConsumer; }
269
+ get: function () { return chunkBEVIAKTB_cjs.traceConsumer; }
248
270
  });
249
271
  Object.defineProperty(exports, "traceProducer", {
250
272
  enumerable: true,
251
- get: function () { return chunkNWT5SYOX_cjs.traceProducer; }
273
+ get: function () { return chunkBEVIAKTB_cjs.traceProducer; }
252
274
  });
253
275
  Object.defineProperty(exports, "BusinessBaggage", {
254
276
  enumerable: true,
@@ -292,55 +314,55 @@ Object.defineProperty(exports, "getMeter", {
292
314
  });
293
315
  Object.defineProperty(exports, "traceDB", {
294
316
  enumerable: true,
295
- get: function () { return chunk74L5DOB4_cjs.traceDB; }
317
+ get: function () { return chunkXNBTEFRZ_cjs.traceDB; }
296
318
  });
297
319
  Object.defineProperty(exports, "traceHTTP", {
298
320
  enumerable: true,
299
- get: function () { return chunk74L5DOB4_cjs.traceHTTP; }
321
+ get: function () { return chunkXNBTEFRZ_cjs.traceHTTP; }
300
322
  });
301
323
  Object.defineProperty(exports, "traceLLM", {
302
324
  enumerable: true,
303
- get: function () { return chunk74L5DOB4_cjs.traceLLM; }
325
+ get: function () { return chunkXNBTEFRZ_cjs.traceLLM; }
304
326
  });
305
327
  Object.defineProperty(exports, "traceMessaging", {
306
328
  enumerable: true,
307
- get: function () { return chunk74L5DOB4_cjs.traceMessaging; }
329
+ get: function () { return chunkXNBTEFRZ_cjs.traceMessaging; }
308
330
  });
309
331
  Object.defineProperty(exports, "ctx", {
310
332
  enumerable: true,
311
- get: function () { return chunkDWRTSOGR_cjs.ctx; }
333
+ get: function () { return chunkXI5WPVR5_cjs.ctx; }
312
334
  });
313
335
  Object.defineProperty(exports, "getEventQueue", {
314
336
  enumerable: true,
315
- get: function () { return chunkDWRTSOGR_cjs.getEventQueue; }
337
+ get: function () { return chunkXI5WPVR5_cjs.getEventQueue; }
316
338
  });
317
339
  Object.defineProperty(exports, "instrument", {
318
340
  enumerable: true,
319
- get: function () { return chunkDWRTSOGR_cjs.instrument; }
341
+ get: function () { return chunkXI5WPVR5_cjs.instrument; }
320
342
  });
321
343
  Object.defineProperty(exports, "span", {
322
344
  enumerable: true,
323
- get: function () { return chunkDWRTSOGR_cjs.span; }
345
+ get: function () { return chunkXI5WPVR5_cjs.span; }
324
346
  });
325
347
  Object.defineProperty(exports, "trace", {
326
348
  enumerable: true,
327
- get: function () { return chunkDWRTSOGR_cjs.trace; }
349
+ get: function () { return chunkXI5WPVR5_cjs.trace; }
328
350
  });
329
351
  Object.defineProperty(exports, "track", {
330
352
  enumerable: true,
331
- get: function () { return chunkDWRTSOGR_cjs.track; }
353
+ get: function () { return chunkXI5WPVR5_cjs.track; }
332
354
  });
333
355
  Object.defineProperty(exports, "withBaggage", {
334
356
  enumerable: true,
335
- get: function () { return chunkDWRTSOGR_cjs.withBaggage; }
357
+ get: function () { return chunkXI5WPVR5_cjs.withBaggage; }
336
358
  });
337
359
  Object.defineProperty(exports, "withNewContext", {
338
360
  enumerable: true,
339
- get: function () { return chunkDWRTSOGR_cjs.withNewContext; }
361
+ get: function () { return chunkXI5WPVR5_cjs.withNewContext; }
340
362
  });
341
363
  Object.defineProperty(exports, "withTracing", {
342
364
  enumerable: true,
343
- get: function () { return chunkDWRTSOGR_cjs.withTracing; }
365
+ get: function () { return chunkXI5WPVR5_cjs.withTracing; }
344
366
  });
345
367
  Object.defineProperty(exports, "defineBaggageSchema", {
346
368
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/shutdown.ts"],"names":["getEventQueue","getSdk","getLogger","resetEvents","resetMetrics","resetEventQueue"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Graceful shutdown with flush and cleanup\n */\n\nimport { getSdk, getLogger } from './init';\nimport { getEventQueue, resetEventQueue } from './track';\nimport { resetEvents } from './event';\nimport { resetMetrics } from './metric';\n\n/**\n * Flush all pending telemetry\n *\n * Flushes both events events and OpenTelemetry spans to their destinations.\n * Includes timeout protection to prevent hanging in serverless environments.\n *\n * Safe to call multiple times.\n *\n * @param options - Optional configuration\n * @param options.timeout - Timeout in milliseconds (default: 2000ms)\n * @param options.forShutdown - If true, permanently disables the events queue after flush (used internally by shutdown())\n *\n * @example Manual flush in serverless\n * ```typescript\n * import { flush } from 'autotel';\n *\n * export const handler = async (event) => {\n * // ... process event\n * await flush(); // Flush before function returns\n * return result;\n * };\n * ```\n *\n * @example With custom timeout\n * ```typescript\n * await flush({ timeout: 5000 }); // 5 second timeout\n * ```\n */\nexport async function flush(options?: {\n timeout?: number;\n forShutdown?: boolean;\n}): Promise<void> {\n const timeout = options?.timeout ?? 2000;\n const forShutdown = options?.forShutdown ?? false;\n\n const doFlush = async () => {\n // Flush events queue (or shutdown queue when tearing down)\n const eventsQueue = getEventQueue();\n if (eventsQueue) {\n if (forShutdown) {\n await eventsQueue.shutdown();\n } else {\n await eventsQueue.flush();\n }\n }\n\n // Flush OpenTelemetry spans\n // This ensures spans are exported immediately, critical for serverless\n const sdk = getSdk();\n if (sdk) {\n try {\n // Type assertion needed as getTracerProvider is not in the public NodeSDK interface\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const sdkAny = sdk as any;\n if (typeof sdkAny.getTracerProvider === 'function') {\n const tracerProvider = sdkAny.getTracerProvider();\n if (\n tracerProvider &&\n typeof tracerProvider.forceFlush === 'function'\n ) {\n await tracerProvider.forceFlush();\n }\n }\n } catch {\n // Ignore errors when accessing tracer provider (may not be available in test mocks)\n }\n }\n };\n\n // Add timeout protection to prevent hanging\n let timeoutHandle: NodeJS.Timeout | undefined;\n try {\n await Promise.race([\n doFlush().finally(() => {\n // Clear timeout as soon as flush completes\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n }),\n new Promise<void>((_, reject) => {\n timeoutHandle = setTimeout(\n () => reject(new Error('Flush timeout')),\n timeout,\n );\n // Use unref() to allow Node to exit if flush completes first\n // This prevents the 2s delay in serverless when flush succeeds immediately\n timeoutHandle.unref();\n }),\n ]);\n } catch (error) {\n // Clear timeout on error too\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n const logger = getLogger();\n logger.error(\n {\n err: error instanceof Error ? error : new Error(String(error)),\n },\n '[autotel] Flush error',\n );\n throw error;\n }\n}\n\n/**\n * Shutdown telemetry and cleanup resources\n *\n * - Flushes all pending data\n * - Shuts down OpenTelemetry SDK\n * - Cleans up resources\n *\n * Call this before process exit.\n *\n * Always performs cleanup even if flush fails, preventing resource leaks\n * in serverless handlers or tests.\n *\n * @example Express server\n * ```typescript\n * const server = app.listen(3000)\n *\n * process.on('SIGTERM', async () => {\n * await server.close()\n * await shutdown()\n * process.exit(0)\n * })\n * ```\n */\nexport async function shutdown(): Promise<void> {\n const logger = getLogger();\n let shutdownError: Error | null = null;\n\n // Attempt to flush (with queue shutdown so new events are rejected), but continue with cleanup even if it fails\n try {\n await flush({ forShutdown: true });\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n shutdownError = err;\n logger.error(\n {\n err,\n },\n '[autotel] Flush failed during shutdown, continuing cleanup',\n );\n }\n\n // Always shutdown SDK and clean up resources\n try {\n // Shutdown OpenTelemetry SDK\n const sdk = getSdk();\n if (sdk) {\n await sdk.shutdown();\n }\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n\n // Ignore ECONNREFUSED errors - this happens when no OTLP endpoint was configured\n // The SDK tries to flush exporters that don't exist, which is harmless\n const isConnectionRefused =\n typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n error.code === 'ECONNREFUSED';\n\n if (!isConnectionRefused) {\n // Only store/log non-connection errors\n if (!shutdownError) {\n shutdownError = err;\n }\n logger.error({ err }, '[autotel] SDK shutdown failed');\n }\n } finally {\n // Clean up singleton Maps and queues to prevent memory leaks\n // This runs even if SDK shutdown fails\n const eventsQueue = getEventQueue();\n if (eventsQueue && typeof eventsQueue.cleanup === 'function') {\n eventsQueue.cleanup();\n }\n resetEvents();\n resetMetrics();\n resetEventQueue();\n }\n\n // Rethrow first error after cleanup completes\n // This allows tests and CI to detect failures while still ensuring cleanup\n if (shutdownError) {\n throw shutdownError;\n }\n}\n\n/**\n * Register automatic shutdown hooks for common signals\n *\n * Handles:\n * - SIGTERM (Docker/K8s graceful shutdown)\n * - SIGINT (Ctrl+C)\n *\n * @internal Called automatically on module load\n */\nfunction registerShutdownHooks(): void {\n if (typeof process === 'undefined') return; // Not in Node.js\n\n const signals: NodeJS.Signals[] = ['SIGTERM', 'SIGINT'];\n let shuttingDown = false;\n\n for (const signal of signals) {\n process.on(signal, async () => {\n if (shuttingDown) return; // Prevent double shutdown\n shuttingDown = true;\n\n if (process.env.NODE_ENV !== 'test') {\n getLogger().info(\n {},\n `[autotel] Received ${signal}, flushing telemetry...`,\n );\n }\n\n try {\n await shutdown();\n } catch (error) {\n getLogger().error(\n {\n err: error instanceof Error ? error : undefined,\n },\n '[autotel] Error during shutdown',\n );\n } finally {\n process.exit(0);\n }\n });\n }\n}\n\n// Auto-register shutdown hooks\nregisterShutdownHooks();\n"]}
1
+ {"version":3,"sources":["../src/shutdown.ts"],"names":["getEventQueue","getSdk","getLogger","resetEvents","resetMetrics","resetEventQueue"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Graceful shutdown with flush and cleanup\n */\n\nimport { getSdk, getLogger } from './init';\nimport { getEventQueue, resetEventQueue } from './track';\nimport { resetEvents } from './event';\nimport { resetMetrics } from './metric';\n\n/**\n * Flush all pending telemetry\n *\n * Flushes both events events and OpenTelemetry spans to their destinations.\n * Includes timeout protection to prevent hanging in serverless environments.\n *\n * Safe to call multiple times.\n *\n * @param options - Optional configuration\n * @param options.timeout - Timeout in milliseconds (default: 2000ms)\n * @param options.forShutdown - If true, permanently disables the events queue after flush (used internally by shutdown())\n *\n * @example Manual flush in serverless\n * ```typescript\n * import { flush } from 'autotel';\n *\n * export const handler = async (event) => {\n * // ... process event\n * await flush(); // Flush before function returns\n * return result;\n * };\n * ```\n *\n * @example With custom timeout\n * ```typescript\n * await flush({ timeout: 5000 }); // 5 second timeout\n * ```\n */\nexport async function flush(options?: {\n timeout?: number;\n forShutdown?: boolean;\n}): Promise<void> {\n const timeout = options?.timeout ?? 2000;\n const forShutdown = options?.forShutdown ?? false;\n\n const doFlush = async () => {\n // Flush events queue (or shutdown queue when tearing down)\n const eventsQueue = getEventQueue();\n if (eventsQueue) {\n if (forShutdown) {\n await eventsQueue.shutdown();\n } else {\n await eventsQueue.flush();\n }\n }\n\n // Flush OpenTelemetry spans\n // This ensures spans are exported immediately, critical for serverless\n const sdk = getSdk();\n if (sdk) {\n try {\n // Type assertion needed as getTracerProvider is not in the public NodeSDK interface\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const sdkAny = sdk as any;\n if (typeof sdkAny.getTracerProvider === 'function') {\n const tracerProvider = sdkAny.getTracerProvider();\n if (\n tracerProvider &&\n typeof tracerProvider.forceFlush === 'function'\n ) {\n await tracerProvider.forceFlush();\n }\n }\n } catch {\n // Ignore errors when accessing tracer provider (may not be available in test mocks)\n }\n }\n };\n\n // Add timeout protection to prevent hanging\n let timeoutHandle: NodeJS.Timeout | undefined;\n try {\n await Promise.race([\n doFlush().finally(() => {\n // Clear timeout as soon as flush completes\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n }),\n new Promise<void>((_, reject) => {\n timeoutHandle = setTimeout(\n () => reject(new Error('Flush timeout')),\n timeout,\n );\n // Use unref() to allow Node to exit if flush completes first\n // This prevents the 2s delay in serverless when flush succeeds immediately\n timeoutHandle.unref();\n }),\n ]);\n } catch (error) {\n // Clear timeout on error too\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n const logger = getLogger();\n logger.error(\n {\n err: error instanceof Error ? error : new Error(String(error)),\n },\n '[autotel] Flush error',\n );\n throw error;\n }\n}\n\n/**\n * Shutdown telemetry and cleanup resources\n *\n * - Flushes all pending data\n * - Shuts down OpenTelemetry SDK\n * - Cleans up resources\n *\n * Call this before process exit.\n *\n * Always performs cleanup even if flush fails, preventing resource leaks\n * in serverless handlers or tests.\n *\n * @example Express server\n * ```typescript\n * const server = app.listen(3000)\n *\n * process.on('SIGTERM', async () => {\n * await server.close()\n * await shutdown()\n * process.exit(0)\n * })\n * ```\n */\nexport async function shutdown(): Promise<void> {\n const logger = getLogger();\n let shutdownError: Error | null = null;\n\n // Attempt to flush (with queue shutdown so new events are rejected), but continue with cleanup even if it fails\n try {\n await flush({ forShutdown: true });\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n shutdownError = err;\n logger.error(\n {\n err,\n },\n '[autotel] Flush failed during shutdown, continuing cleanup',\n );\n }\n\n // Always shutdown SDK and clean up resources\n try {\n // Shutdown OpenTelemetry SDK\n const sdk = getSdk();\n if (sdk) {\n await sdk.shutdown();\n }\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n\n // Ignore ECONNREFUSED errors - this happens when no OTLP endpoint was configured\n // The SDK tries to flush exporters that don't exist, which is harmless\n const isConnectionRefused =\n typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n error.code === 'ECONNREFUSED';\n\n if (!isConnectionRefused) {\n // Only store/log non-connection errors\n if (!shutdownError) {\n shutdownError = err;\n }\n logger.error({ err }, '[autotel] SDK shutdown failed');\n }\n } finally {\n // Clean up singleton Maps and queues to prevent memory leaks\n // This runs even if SDK shutdown fails\n const eventsQueue = getEventQueue();\n if (eventsQueue && typeof eventsQueue.cleanup === 'function') {\n eventsQueue.cleanup();\n }\n resetEvents();\n resetMetrics();\n resetEventQueue();\n }\n\n // Rethrow first error after cleanup completes\n // This allows tests and CI to detect failures while still ensuring cleanup\n if (shutdownError) {\n throw shutdownError;\n }\n}\n\n/**\n * Register automatic shutdown hooks for common signals\n *\n * Handles:\n * - SIGTERM (Docker/K8s graceful shutdown)\n * - SIGINT (Ctrl+C)\n *\n * @internal Called automatically on module load\n */\nfunction registerShutdownHooks(): void {\n if (typeof process === 'undefined') return; // Not in Node.js\n\n const signals: NodeJS.Signals[] = ['SIGTERM', 'SIGINT'];\n let shuttingDown = false;\n\n for (const signal of signals) {\n process.on(signal, async () => {\n if (shuttingDown) return; // Prevent double shutdown\n shuttingDown = true;\n\n if (process.env.NODE_ENV !== 'test') {\n getLogger().info(\n {},\n `[autotel] Received ${signal}, flushing telemetry...`,\n );\n }\n\n try {\n await shutdown();\n } catch (error) {\n getLogger().error(\n {\n err: error instanceof Error ? error : undefined,\n },\n '[autotel] Error during shutdown',\n );\n } finally {\n process.exit(0);\n }\n });\n }\n}\n\n// Auto-register shutdown hooks\nregisterShutdownHooks();\n"]}
package/dist/index.d.cts CHANGED
@@ -16,6 +16,7 @@ export { createCounter, createHistogram, createObservableGauge, createUpDownCoun
16
16
  export { createDeterministicTraceId, finalizeSpan, flattenMetadata, getActiveContext, getActiveSpan, getTracer, runWithSpan } from './trace-helpers.cjs';
17
17
  export { getAutotelTracer, getAutotelTracerProvider, setAutotelTracerProvider } from './tracer-provider.cjs';
18
18
  export { DBConfig, HTTPConfig, LLMConfig, MessagingConfig, traceDB, traceHTTP, traceLLM, traceMessaging } from './semantic-helpers.cjs';
19
+ export { HTTPAttributes, ServiceAttributes, URLAttributes, httpRequestHeaderAttribute, httpResponseHeaderAttribute } from './semantic-conventions.cjs';
19
20
  export { p as AttributeGuardrails, A as AttributePolicy, J as ClientAttrs, C as CloudAttrs, Q as CodeAttrs, z as ContainerAttrs, t as DBAttrs, L as DeploymentAttrs, D as DeviceAttrs, E as ErrorAttrs, V as ExceptionAttrs, B as FaaSAttrs, F as FeatureFlagAttrs, G as GenAIAttrs, I as GraphQLAttrs, q as HTTPClientAttrs, H as HTTPServerAttrs, K as K8sAttrs, M as MessagingAttrs, N as NetworkAttrs, O as OTelAttrs, P as PeerAttrs, y as ProcessAttrs, R as RPCAttrs, w as ServerAddressAttrs, u as ServiceAttrs, S as SessionAttrs, W as TLSAttrs, T as ThreadAttrs, x as URLAttrs, U as UserAttrs, a as attrs, n as autoRedactPII, e as dbClient, d as httpClient, h as httpServer, i as identify, j as mergeAttrs, m as mergeServiceResource, r as request, k as safeSetAttributes, c as setDevice, f as setError, g as setException, b as setSession, s as setUser, v as validateAttribute } from './utils-DuNJfXSH.cjs';
20
21
  export { T as TraceContext, d as defineBaggageSchema } from './trace-context-t5X1AP-e.cjs';
21
22
  export { ConsumerConfig, ConsumerContext, LagMetricsConfig, MessagingOperation, MessagingSystem, ProducerConfig, ProducerContext, traceConsumer, traceProducer } from './messaging.cjs';
package/dist/index.d.ts CHANGED
@@ -16,6 +16,7 @@ export { createCounter, createHistogram, createObservableGauge, createUpDownCoun
16
16
  export { createDeterministicTraceId, finalizeSpan, flattenMetadata, getActiveContext, getActiveSpan, getTracer, runWithSpan } from './trace-helpers.js';
17
17
  export { getAutotelTracer, getAutotelTracerProvider, setAutotelTracerProvider } from './tracer-provider.js';
18
18
  export { DBConfig, HTTPConfig, LLMConfig, MessagingConfig, traceDB, traceHTTP, traceLLM, traceMessaging } from './semantic-helpers.js';
19
+ export { HTTPAttributes, ServiceAttributes, URLAttributes, httpRequestHeaderAttribute, httpResponseHeaderAttribute } from './semantic-conventions.js';
19
20
  export { p as AttributeGuardrails, A as AttributePolicy, J as ClientAttrs, C as CloudAttrs, Q as CodeAttrs, z as ContainerAttrs, t as DBAttrs, L as DeploymentAttrs, D as DeviceAttrs, E as ErrorAttrs, V as ExceptionAttrs, B as FaaSAttrs, F as FeatureFlagAttrs, G as GenAIAttrs, I as GraphQLAttrs, q as HTTPClientAttrs, H as HTTPServerAttrs, K as K8sAttrs, M as MessagingAttrs, N as NetworkAttrs, O as OTelAttrs, P as PeerAttrs, y as ProcessAttrs, R as RPCAttrs, w as ServerAddressAttrs, u as ServiceAttrs, S as SessionAttrs, W as TLSAttrs, T as ThreadAttrs, x as URLAttrs, U as UserAttrs, a as attrs, n as autoRedactPII, e as dbClient, d as httpClient, h as httpServer, i as identify, j as mergeAttrs, m as mergeServiceResource, r as request, k as safeSetAttributes, c as setDevice, f as setError, g as setException, b as setSession, s as setUser, v as validateAttribute } from './utils-D1trOLNm.js';
20
21
  export { T as TraceContext, d as defineBaggageSchema } from './trace-context-t5X1AP-e.js';
21
22
  export { ConsumerConfig, ConsumerContext, LagMetricsConfig, MessagingOperation, MessagingSystem, ProducerConfig, ProducerContext, traceConsumer, traceProducer } from './messaging.js';
package/dist/index.js CHANGED
@@ -1,14 +1,16 @@
1
- export { getCurrentWorkflowContext, isInWorkflow, traceStep, traceWorkflow } from './chunk-WC2AMGBX.js';
2
- export { attrs, autoRedactPII, dbClient, httpClient, httpServer, identify, mergeAttrs, mergeServiceResource, request, safeSetAttributes, setDevice, setError, setException, setSession, setUser, validateAttribute } from './chunk-4HPWUYCV.js';
3
- export { traceConsumer, traceProducer } from './chunk-FMPBL2NF.js';
1
+ export { getCurrentWorkflowContext, isInWorkflow, traceStep, traceWorkflow } from './chunk-LCMARHLX.js';
2
+ export { attrs, autoRedactPII, dbClient, httpClient, httpServer, identify, mergeAttrs, mergeServiceResource, request, safeSetAttributes, setDevice, setError, setException, setSession, setUser, validateAttribute } from './chunk-M4US3P4K.js';
3
+ export { httpRequestHeaderAttribute, httpResponseHeaderAttribute } from './chunk-7552UTQW.js';
4
+ export { HTTPAttributes, ServiceAttributes, URLAttributes } from './chunk-4A53YIAX.js';
5
+ export { traceConsumer, traceProducer } from './chunk-XBVB3AFF.js';
4
6
  export { BusinessBaggage, createSafeBaggageSchema } from './chunk-4IFSYQVX.js';
5
7
  import { resetMetrics } from './chunk-7SAWIN74.js';
6
8
  export { Metric, getMetrics, resetMetrics } from './chunk-7SAWIN74.js';
7
9
  import './chunk-5ZN622AO.js';
8
10
  export { createCounter, createHistogram, createObservableGauge, createUpDownCounter, getMeter } from './chunk-TQ5UWA7S.js';
9
- export { traceDB, traceHTTP, traceLLM, traceMessaging } from './chunk-QKVQWGTF.js';
10
- import { getEventQueue, resetEventQueue } from './chunk-QP5LVD4L.js';
11
- export { ctx, getEventQueue, instrument, span, trace, track, withBaggage, withNewContext, withTracing } from './chunk-QP5LVD4L.js';
11
+ export { traceDB, traceHTTP, traceLLM, traceMessaging } from './chunk-5JLXDCL2.js';
12
+ import { getEventQueue, resetEventQueue } from './chunk-G47ZCJGW.js';
13
+ export { ctx, getEventQueue, instrument, span, trace, track, withBaggage, withNewContext, withTracing } from './chunk-G47ZCJGW.js';
12
14
  export { defineBaggageSchema } from './chunk-SR35DG5A.js';
13
15
  export { createDeterministicTraceId, finalizeSpan, flattenMetadata, getActiveContext, getActiveSpan, getTracer, runWithSpan } from './chunk-HJPXNUZR.js';
14
16
  import { resetEvents } from './chunk-PAVYKPCQ.js';