@superblocksteam/telemetry 2.0.0-SNAPSHOT.329be19cb7ca892b

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 (388) hide show
  1. package/LICENSE.txt +87 -0
  2. package/README.md +298 -0
  3. package/dist/browser/console-logging.d.ts +18 -0
  4. package/dist/browser/console-logging.d.ts.map +1 -0
  5. package/dist/browser/console-logging.js +32 -0
  6. package/dist/browser/console-logging.js.map +1 -0
  7. package/dist/browser/early-console-buffer.d.ts +49 -0
  8. package/dist/browser/early-console-buffer.d.ts.map +1 -0
  9. package/dist/browser/early-console-buffer.js +182 -0
  10. package/dist/browser/early-console-buffer.js.map +1 -0
  11. package/dist/browser/index.d.ts +17 -0
  12. package/dist/browser/index.d.ts.map +1 -0
  13. package/dist/browser/index.js +50 -0
  14. package/dist/browser/index.js.map +1 -0
  15. package/dist/browser/init.d.ts +101 -0
  16. package/dist/browser/init.d.ts.map +1 -0
  17. package/dist/browser/init.js +329 -0
  18. package/dist/browser/init.js.map +1 -0
  19. package/dist/browser/instrumentations.d.ts +67 -0
  20. package/dist/browser/instrumentations.d.ts.map +1 -0
  21. package/dist/browser/instrumentations.js +83 -0
  22. package/dist/browser/instrumentations.js.map +1 -0
  23. package/dist/browser/logs.d.ts +55 -0
  24. package/dist/browser/logs.d.ts.map +1 -0
  25. package/dist/browser/logs.js +86 -0
  26. package/dist/browser/logs.js.map +1 -0
  27. package/dist/browser/metrics.d.ts +29 -0
  28. package/dist/browser/metrics.d.ts.map +1 -0
  29. package/dist/browser/metrics.js +49 -0
  30. package/dist/browser/metrics.js.map +1 -0
  31. package/dist/browser/resilient-exporter.d.ts +43 -0
  32. package/dist/browser/resilient-exporter.d.ts.map +1 -0
  33. package/dist/browser/resilient-exporter.js +88 -0
  34. package/dist/browser/resilient-exporter.js.map +1 -0
  35. package/dist/browser/sanitizer.d.ts +35 -0
  36. package/dist/browser/sanitizer.d.ts.map +1 -0
  37. package/dist/browser/sanitizer.js +211 -0
  38. package/dist/browser/sanitizer.js.map +1 -0
  39. package/dist/browser/traced-socket.d.ts +102 -0
  40. package/dist/browser/traced-socket.d.ts.map +1 -0
  41. package/dist/browser/traced-socket.js +203 -0
  42. package/dist/browser/traced-socket.js.map +1 -0
  43. package/dist/common/contracts/tier2-traces.d.ts +116 -0
  44. package/dist/common/contracts/tier2-traces.d.ts.map +1 -0
  45. package/dist/common/contracts/tier2-traces.js +736 -0
  46. package/dist/common/contracts/tier2-traces.js.map +1 -0
  47. package/dist/common/deployment-type.d.ts +18 -0
  48. package/dist/common/deployment-type.d.ts.map +1 -0
  49. package/dist/common/deployment-type.js +30 -0
  50. package/dist/common/deployment-type.js.map +1 -0
  51. package/dist/common/guardrails.d.ts +116 -0
  52. package/dist/common/guardrails.d.ts.map +1 -0
  53. package/dist/common/guardrails.js +189 -0
  54. package/dist/common/guardrails.js.map +1 -0
  55. package/dist/common/index.d.ts +18 -0
  56. package/dist/common/index.d.ts.map +1 -0
  57. package/dist/common/index.js +34 -0
  58. package/dist/common/index.js.map +1 -0
  59. package/dist/common/log-sanitizer.d.ts +170 -0
  60. package/dist/common/log-sanitizer.d.ts.map +1 -0
  61. package/dist/common/log-sanitizer.js +690 -0
  62. package/dist/common/log-sanitizer.js.map +1 -0
  63. package/dist/common/normalize-metric-path.d.ts +2 -0
  64. package/dist/common/normalize-metric-path.d.ts.map +1 -0
  65. package/dist/common/normalize-metric-path.js +22 -0
  66. package/dist/common/normalize-metric-path.js.map +1 -0
  67. package/dist/common/policy-evaluator.d.ts +103 -0
  68. package/dist/common/policy-evaluator.d.ts.map +1 -0
  69. package/dist/common/policy-evaluator.js +200 -0
  70. package/dist/common/policy-evaluator.js.map +1 -0
  71. package/dist/common/resource.d.ts +79 -0
  72. package/dist/common/resource.d.ts.map +1 -0
  73. package/dist/common/resource.js +128 -0
  74. package/dist/common/resource.js.map +1 -0
  75. package/dist/common/tier-hints.d.ts +182 -0
  76. package/dist/common/tier-hints.d.ts.map +1 -0
  77. package/dist/common/tier-hints.js +209 -0
  78. package/dist/common/tier-hints.js.map +1 -0
  79. package/dist/common/trace-sanitizer.d.ts +82 -0
  80. package/dist/common/trace-sanitizer.d.ts.map +1 -0
  81. package/dist/common/trace-sanitizer.js +234 -0
  82. package/dist/common/trace-sanitizer.js.map +1 -0
  83. package/dist/common/traced-socket-types.d.ts +43 -0
  84. package/dist/common/traced-socket-types.d.ts.map +1 -0
  85. package/dist/common/traced-socket-types.js +17 -0
  86. package/dist/common/traced-socket-types.js.map +1 -0
  87. package/dist/index.d.ts +45 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +88 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/lint/forbidden-attributes.d.ts +149 -0
  92. package/dist/lint/forbidden-attributes.d.ts.map +1 -0
  93. package/dist/lint/forbidden-attributes.js +215 -0
  94. package/dist/lint/forbidden-attributes.js.map +1 -0
  95. package/dist/lint/index.d.ts +9 -0
  96. package/dist/lint/index.d.ts.map +1 -0
  97. package/dist/lint/index.js +16 -0
  98. package/dist/lint/index.js.map +1 -0
  99. package/dist/llmobs/index.d.ts +22 -0
  100. package/dist/llmobs/index.d.ts.map +1 -0
  101. package/dist/llmobs/index.js +29 -0
  102. package/dist/llmobs/index.js.map +1 -0
  103. package/dist/llmobs/tier1-exporter.d.ts +146 -0
  104. package/dist/llmobs/tier1-exporter.d.ts.map +1 -0
  105. package/dist/llmobs/tier1-exporter.js +199 -0
  106. package/dist/llmobs/tier1-exporter.js.map +1 -0
  107. package/dist/llmobs/tier2-summarizer.d.ts +268 -0
  108. package/dist/llmobs/tier2-summarizer.d.ts.map +1 -0
  109. package/dist/llmobs/tier2-summarizer.js +656 -0
  110. package/dist/llmobs/tier2-summarizer.js.map +1 -0
  111. package/dist/node/dynamic-attribute-processor.d.ts +43 -0
  112. package/dist/node/dynamic-attribute-processor.d.ts.map +1 -0
  113. package/dist/node/dynamic-attribute-processor.js +79 -0
  114. package/dist/node/dynamic-attribute-processor.js.map +1 -0
  115. package/dist/node/exporters/resilient-exporter.d.ts +91 -0
  116. package/dist/node/exporters/resilient-exporter.d.ts.map +1 -0
  117. package/dist/node/exporters/resilient-exporter.js +136 -0
  118. package/dist/node/exporters/resilient-exporter.js.map +1 -0
  119. package/dist/node/index.d.ts +13 -0
  120. package/dist/node/index.d.ts.map +1 -0
  121. package/dist/node/index.js +32 -0
  122. package/dist/node/index.js.map +1 -0
  123. package/dist/node/init.d.ts +97 -0
  124. package/dist/node/init.d.ts.map +1 -0
  125. package/dist/node/init.js +365 -0
  126. package/dist/node/init.js.map +1 -0
  127. package/dist/node/local-obs-mode.d.ts +17 -0
  128. package/dist/node/local-obs-mode.d.ts.map +1 -0
  129. package/dist/node/local-obs-mode.js +22 -0
  130. package/dist/node/local-obs-mode.js.map +1 -0
  131. package/dist/node/log-processor.d.ts +132 -0
  132. package/dist/node/log-processor.d.ts.map +1 -0
  133. package/dist/node/log-processor.js +397 -0
  134. package/dist/node/log-processor.js.map +1 -0
  135. package/dist/node/metrics-client.d.ts +88 -0
  136. package/dist/node/metrics-client.d.ts.map +1 -0
  137. package/dist/node/metrics-client.js +209 -0
  138. package/dist/node/metrics-client.js.map +1 -0
  139. package/dist/node/safe-logger.d.ts +55 -0
  140. package/dist/node/safe-logger.d.ts.map +1 -0
  141. package/dist/node/safe-logger.js +158 -0
  142. package/dist/node/safe-logger.js.map +1 -0
  143. package/dist/node/sanitizing-processor.d.ts +67 -0
  144. package/dist/node/sanitizing-processor.d.ts.map +1 -0
  145. package/dist/node/sanitizing-processor.js +167 -0
  146. package/dist/node/sanitizing-processor.js.map +1 -0
  147. package/dist/node/service-tracers.d.ts +52 -0
  148. package/dist/node/service-tracers.d.ts.map +1 -0
  149. package/dist/node/service-tracers.js +81 -0
  150. package/dist/node/service-tracers.js.map +1 -0
  151. package/dist/node/traced-socket.d.ts +120 -0
  152. package/dist/node/traced-socket.d.ts.map +1 -0
  153. package/dist/node/traced-socket.js +338 -0
  154. package/dist/node/traced-socket.js.map +1 -0
  155. package/dist/npm-registry/emitter.d.ts +310 -0
  156. package/dist/npm-registry/emitter.d.ts.map +1 -0
  157. package/dist/npm-registry/emitter.js +537 -0
  158. package/dist/npm-registry/emitter.js.map +1 -0
  159. package/dist/npm-registry/index.d.ts +12 -0
  160. package/dist/npm-registry/index.d.ts.map +1 -0
  161. package/dist/npm-registry/index.js +28 -0
  162. package/dist/npm-registry/index.js.map +1 -0
  163. package/dist/npm-registry/sanitize.d.ts +174 -0
  164. package/dist/npm-registry/sanitize.d.ts.map +1 -0
  165. package/dist/npm-registry/sanitize.js +342 -0
  166. package/dist/npm-registry/sanitize.js.map +1 -0
  167. package/dist/npm-registry/spans.d.ts +61 -0
  168. package/dist/npm-registry/spans.d.ts.map +1 -0
  169. package/dist/npm-registry/spans.js +91 -0
  170. package/dist/npm-registry/spans.js.map +1 -0
  171. package/dist/testing/in-memory-exporter.d.ts +179 -0
  172. package/dist/testing/in-memory-exporter.d.ts.map +1 -0
  173. package/dist/testing/in-memory-exporter.js +256 -0
  174. package/dist/testing/in-memory-exporter.js.map +1 -0
  175. package/dist/testing/index.d.ts +9 -0
  176. package/dist/testing/index.d.ts.map +1 -0
  177. package/dist/testing/index.js +21 -0
  178. package/dist/testing/index.js.map +1 -0
  179. package/dist/testing/metrics-capture.d.ts +29 -0
  180. package/dist/testing/metrics-capture.d.ts.map +1 -0
  181. package/dist/testing/metrics-capture.js +74 -0
  182. package/dist/testing/metrics-capture.js.map +1 -0
  183. package/dist/testing/test-init.d.ts +80 -0
  184. package/dist/testing/test-init.d.ts.map +1 -0
  185. package/dist/testing/test-init.js +144 -0
  186. package/dist/testing/test-init.js.map +1 -0
  187. package/dist/types/index.d.ts +84 -0
  188. package/dist/types/index.d.ts.map +1 -0
  189. package/dist/types/index.js +23 -0
  190. package/dist/types/index.js.map +1 -0
  191. package/dist/types/policy.d.ts +92 -0
  192. package/dist/types/policy.d.ts.map +1 -0
  193. package/dist/types/policy.js +125 -0
  194. package/dist/types/policy.js.map +1 -0
  195. package/dist-esm/browser/console-logging.d.ts +18 -0
  196. package/dist-esm/browser/console-logging.d.ts.map +1 -0
  197. package/dist-esm/browser/console-logging.js +27 -0
  198. package/dist-esm/browser/console-logging.js.map +1 -0
  199. package/dist-esm/browser/early-console-buffer.d.ts +49 -0
  200. package/dist-esm/browser/early-console-buffer.d.ts.map +1 -0
  201. package/dist-esm/browser/early-console-buffer.js +180 -0
  202. package/dist-esm/browser/early-console-buffer.js.map +1 -0
  203. package/dist-esm/browser/index.d.ts +17 -0
  204. package/dist-esm/browser/index.d.ts.map +1 -0
  205. package/dist-esm/browser/index.js +22 -0
  206. package/dist-esm/browser/index.js.map +1 -0
  207. package/dist-esm/browser/init.d.ts +101 -0
  208. package/dist-esm/browser/init.d.ts.map +1 -0
  209. package/dist-esm/browser/init.js +319 -0
  210. package/dist-esm/browser/init.js.map +1 -0
  211. package/dist-esm/browser/instrumentations.d.ts +67 -0
  212. package/dist-esm/browser/instrumentations.d.ts.map +1 -0
  213. package/dist-esm/browser/instrumentations.js +79 -0
  214. package/dist-esm/browser/instrumentations.js.map +1 -0
  215. package/dist-esm/browser/logs.d.ts +55 -0
  216. package/dist-esm/browser/logs.d.ts.map +1 -0
  217. package/dist-esm/browser/logs.js +79 -0
  218. package/dist-esm/browser/logs.js.map +1 -0
  219. package/dist-esm/browser/metrics.d.ts +29 -0
  220. package/dist-esm/browser/metrics.d.ts.map +1 -0
  221. package/dist-esm/browser/metrics.js +46 -0
  222. package/dist-esm/browser/metrics.js.map +1 -0
  223. package/dist-esm/browser/resilient-exporter.d.ts +43 -0
  224. package/dist-esm/browser/resilient-exporter.d.ts.map +1 -0
  225. package/dist-esm/browser/resilient-exporter.js +84 -0
  226. package/dist-esm/browser/resilient-exporter.js.map +1 -0
  227. package/dist-esm/browser/sanitizer.d.ts +35 -0
  228. package/dist-esm/browser/sanitizer.d.ts.map +1 -0
  229. package/dist-esm/browser/sanitizer.js +207 -0
  230. package/dist-esm/browser/sanitizer.js.map +1 -0
  231. package/dist-esm/browser/traced-socket.d.ts +102 -0
  232. package/dist-esm/browser/traced-socket.d.ts.map +1 -0
  233. package/dist-esm/browser/traced-socket.js +199 -0
  234. package/dist-esm/browser/traced-socket.js.map +1 -0
  235. package/dist-esm/common/contracts/tier2-traces.d.ts +116 -0
  236. package/dist-esm/common/contracts/tier2-traces.d.ts.map +1 -0
  237. package/dist-esm/common/contracts/tier2-traces.js +725 -0
  238. package/dist-esm/common/contracts/tier2-traces.js.map +1 -0
  239. package/dist-esm/common/deployment-type.d.ts +18 -0
  240. package/dist-esm/common/deployment-type.d.ts.map +1 -0
  241. package/dist-esm/common/deployment-type.js +27 -0
  242. package/dist-esm/common/deployment-type.js.map +1 -0
  243. package/dist-esm/common/guardrails.d.ts +116 -0
  244. package/dist-esm/common/guardrails.d.ts.map +1 -0
  245. package/dist-esm/common/guardrails.js +179 -0
  246. package/dist-esm/common/guardrails.js.map +1 -0
  247. package/dist-esm/common/index.d.ts +18 -0
  248. package/dist-esm/common/index.d.ts.map +1 -0
  249. package/dist-esm/common/index.js +18 -0
  250. package/dist-esm/common/index.js.map +1 -0
  251. package/dist-esm/common/log-sanitizer.d.ts +170 -0
  252. package/dist-esm/common/log-sanitizer.d.ts.map +1 -0
  253. package/dist-esm/common/log-sanitizer.js +672 -0
  254. package/dist-esm/common/log-sanitizer.js.map +1 -0
  255. package/dist-esm/common/normalize-metric-path.d.ts +2 -0
  256. package/dist-esm/common/normalize-metric-path.d.ts.map +1 -0
  257. package/dist-esm/common/normalize-metric-path.js +19 -0
  258. package/dist-esm/common/normalize-metric-path.js.map +1 -0
  259. package/dist-esm/common/policy-evaluator.d.ts +103 -0
  260. package/dist-esm/common/policy-evaluator.d.ts.map +1 -0
  261. package/dist-esm/common/policy-evaluator.js +196 -0
  262. package/dist-esm/common/policy-evaluator.js.map +1 -0
  263. package/dist-esm/common/resource.d.ts +79 -0
  264. package/dist-esm/common/resource.d.ts.map +1 -0
  265. package/dist-esm/common/resource.js +121 -0
  266. package/dist-esm/common/resource.js.map +1 -0
  267. package/dist-esm/common/tier-hints.d.ts +182 -0
  268. package/dist-esm/common/tier-hints.d.ts.map +1 -0
  269. package/dist-esm/common/tier-hints.js +199 -0
  270. package/dist-esm/common/tier-hints.js.map +1 -0
  271. package/dist-esm/common/trace-sanitizer.d.ts +82 -0
  272. package/dist-esm/common/trace-sanitizer.d.ts.map +1 -0
  273. package/dist-esm/common/trace-sanitizer.js +230 -0
  274. package/dist-esm/common/trace-sanitizer.js.map +1 -0
  275. package/dist-esm/common/traced-socket-types.d.ts +43 -0
  276. package/dist-esm/common/traced-socket-types.d.ts.map +1 -0
  277. package/dist-esm/common/traced-socket-types.js +16 -0
  278. package/dist-esm/common/traced-socket-types.js.map +1 -0
  279. package/dist-esm/index.d.ts +45 -0
  280. package/dist-esm/index.d.ts.map +1 -0
  281. package/dist-esm/index.js +56 -0
  282. package/dist-esm/index.js.map +1 -0
  283. package/dist-esm/lint/forbidden-attributes.d.ts +149 -0
  284. package/dist-esm/lint/forbidden-attributes.d.ts.map +1 -0
  285. package/dist-esm/lint/forbidden-attributes.js +210 -0
  286. package/dist-esm/lint/forbidden-attributes.js.map +1 -0
  287. package/dist-esm/lint/index.d.ts +9 -0
  288. package/dist-esm/lint/index.d.ts.map +1 -0
  289. package/dist-esm/lint/index.js +9 -0
  290. package/dist-esm/lint/index.js.map +1 -0
  291. package/dist-esm/llmobs/index.d.ts +22 -0
  292. package/dist-esm/llmobs/index.d.ts.map +1 -0
  293. package/dist-esm/llmobs/index.js +22 -0
  294. package/dist-esm/llmobs/index.js.map +1 -0
  295. package/dist-esm/llmobs/tier1-exporter.d.ts +146 -0
  296. package/dist-esm/llmobs/tier1-exporter.d.ts.map +1 -0
  297. package/dist-esm/llmobs/tier1-exporter.js +193 -0
  298. package/dist-esm/llmobs/tier1-exporter.js.map +1 -0
  299. package/dist-esm/llmobs/tier2-summarizer.d.ts +268 -0
  300. package/dist-esm/llmobs/tier2-summarizer.d.ts.map +1 -0
  301. package/dist-esm/llmobs/tier2-summarizer.js +652 -0
  302. package/dist-esm/llmobs/tier2-summarizer.js.map +1 -0
  303. package/dist-esm/node/dynamic-attribute-processor.d.ts +43 -0
  304. package/dist-esm/node/dynamic-attribute-processor.d.ts.map +1 -0
  305. package/dist-esm/node/dynamic-attribute-processor.js +74 -0
  306. package/dist-esm/node/dynamic-attribute-processor.js.map +1 -0
  307. package/dist-esm/node/exporters/resilient-exporter.d.ts +91 -0
  308. package/dist-esm/node/exporters/resilient-exporter.d.ts.map +1 -0
  309. package/dist-esm/node/exporters/resilient-exporter.js +132 -0
  310. package/dist-esm/node/exporters/resilient-exporter.js.map +1 -0
  311. package/dist-esm/node/index.d.ts +13 -0
  312. package/dist-esm/node/index.d.ts.map +1 -0
  313. package/dist-esm/node/index.js +13 -0
  314. package/dist-esm/node/index.js.map +1 -0
  315. package/dist-esm/node/init.d.ts +97 -0
  316. package/dist-esm/node/init.d.ts.map +1 -0
  317. package/dist-esm/node/init.js +359 -0
  318. package/dist-esm/node/init.js.map +1 -0
  319. package/dist-esm/node/local-obs-mode.d.ts +17 -0
  320. package/dist-esm/node/local-obs-mode.d.ts.map +1 -0
  321. package/dist-esm/node/local-obs-mode.js +19 -0
  322. package/dist-esm/node/local-obs-mode.js.map +1 -0
  323. package/dist-esm/node/log-processor.d.ts +132 -0
  324. package/dist-esm/node/log-processor.d.ts.map +1 -0
  325. package/dist-esm/node/log-processor.js +389 -0
  326. package/dist-esm/node/log-processor.js.map +1 -0
  327. package/dist-esm/node/metrics-client.d.ts +88 -0
  328. package/dist-esm/node/metrics-client.d.ts.map +1 -0
  329. package/dist-esm/node/metrics-client.js +205 -0
  330. package/dist-esm/node/metrics-client.js.map +1 -0
  331. package/dist-esm/node/safe-logger.d.ts +55 -0
  332. package/dist-esm/node/safe-logger.d.ts.map +1 -0
  333. package/dist-esm/node/safe-logger.js +154 -0
  334. package/dist-esm/node/safe-logger.js.map +1 -0
  335. package/dist-esm/node/sanitizing-processor.d.ts +67 -0
  336. package/dist-esm/node/sanitizing-processor.d.ts.map +1 -0
  337. package/dist-esm/node/sanitizing-processor.js +163 -0
  338. package/dist-esm/node/sanitizing-processor.js.map +1 -0
  339. package/dist-esm/node/service-tracers.d.ts +52 -0
  340. package/dist-esm/node/service-tracers.d.ts.map +1 -0
  341. package/dist-esm/node/service-tracers.js +78 -0
  342. package/dist-esm/node/service-tracers.js.map +1 -0
  343. package/dist-esm/node/traced-socket.d.ts +120 -0
  344. package/dist-esm/node/traced-socket.d.ts.map +1 -0
  345. package/dist-esm/node/traced-socket.js +334 -0
  346. package/dist-esm/node/traced-socket.js.map +1 -0
  347. package/dist-esm/npm-registry/emitter.d.ts +310 -0
  348. package/dist-esm/npm-registry/emitter.d.ts.map +1 -0
  349. package/dist-esm/npm-registry/emitter.js +525 -0
  350. package/dist-esm/npm-registry/emitter.js.map +1 -0
  351. package/dist-esm/npm-registry/index.d.ts +12 -0
  352. package/dist-esm/npm-registry/index.d.ts.map +1 -0
  353. package/dist-esm/npm-registry/index.js +12 -0
  354. package/dist-esm/npm-registry/index.js.map +1 -0
  355. package/dist-esm/npm-registry/sanitize.d.ts +174 -0
  356. package/dist-esm/npm-registry/sanitize.d.ts.map +1 -0
  357. package/dist-esm/npm-registry/sanitize.js +331 -0
  358. package/dist-esm/npm-registry/sanitize.js.map +1 -0
  359. package/dist-esm/npm-registry/spans.d.ts +61 -0
  360. package/dist-esm/npm-registry/spans.d.ts.map +1 -0
  361. package/dist-esm/npm-registry/spans.js +86 -0
  362. package/dist-esm/npm-registry/spans.js.map +1 -0
  363. package/dist-esm/package.json +1 -0
  364. package/dist-esm/testing/in-memory-exporter.d.ts +179 -0
  365. package/dist-esm/testing/in-memory-exporter.d.ts.map +1 -0
  366. package/dist-esm/testing/in-memory-exporter.js +250 -0
  367. package/dist-esm/testing/in-memory-exporter.js.map +1 -0
  368. package/dist-esm/testing/index.d.ts +9 -0
  369. package/dist-esm/testing/index.d.ts.map +1 -0
  370. package/dist-esm/testing/index.js +9 -0
  371. package/dist-esm/testing/index.js.map +1 -0
  372. package/dist-esm/testing/metrics-capture.d.ts +29 -0
  373. package/dist-esm/testing/metrics-capture.d.ts.map +1 -0
  374. package/dist-esm/testing/metrics-capture.js +71 -0
  375. package/dist-esm/testing/metrics-capture.js.map +1 -0
  376. package/dist-esm/testing/test-init.d.ts +80 -0
  377. package/dist-esm/testing/test-init.d.ts.map +1 -0
  378. package/dist-esm/testing/test-init.js +137 -0
  379. package/dist-esm/testing/test-init.js.map +1 -0
  380. package/dist-esm/types/index.d.ts +84 -0
  381. package/dist-esm/types/index.d.ts.map +1 -0
  382. package/dist-esm/types/index.js +7 -0
  383. package/dist-esm/types/index.js.map +1 -0
  384. package/dist-esm/types/policy.d.ts +92 -0
  385. package/dist-esm/types/policy.d.ts.map +1 -0
  386. package/dist-esm/types/policy.js +122 -0
  387. package/dist-esm/types/policy.js.map +1 -0
  388. package/package.json +102 -0
@@ -0,0 +1,365 @@
1
+ "use strict";
2
+ /**
3
+ * Node.js Telemetry Bootstrap
4
+ *
5
+ * This is the ONLY approved way to initialize telemetry in Node.js services.
6
+ * Direct NodeSDK usage outside this package is prohibited.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.initNodeTelemetry = initNodeTelemetry;
10
+ exports.getTelemetryInstance = getTelemetryInstance;
11
+ exports.isTelemetryInitialized = isTelemetryInitialized;
12
+ exports.resetTelemetry = resetTelemetry;
13
+ const api_1 = require("@opentelemetry/api");
14
+ const api_logs_1 = require("@opentelemetry/api-logs");
15
+ const context_async_hooks_1 = require("@opentelemetry/context-async-hooks");
16
+ const core_1 = require("@opentelemetry/core");
17
+ const exporter_logs_otlp_http_1 = require("@opentelemetry/exporter-logs-otlp-http");
18
+ const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http");
19
+ const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
20
+ const sdk_logs_1 = require("@opentelemetry/sdk-logs");
21
+ const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
22
+ const sdk_node_1 = require("@opentelemetry/sdk-node");
23
+ const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
24
+ const tier2_traces_js_1 = require("../common/contracts/tier2-traces.js");
25
+ const policy_evaluator_js_1 = require("../common/policy-evaluator.js");
26
+ const resource_js_1 = require("../common/resource.js");
27
+ const trace_sanitizer_js_1 = require("../common/trace-sanitizer.js");
28
+ const policy_js_1 = require("../types/policy.js");
29
+ const dynamic_attribute_processor_js_1 = require("./dynamic-attribute-processor.js");
30
+ const resilient_exporter_js_1 = require("./exporters/resilient-exporter.js");
31
+ const local_obs_mode_js_1 = require("./local-obs-mode.js");
32
+ const log_processor_js_1 = require("./log-processor.js");
33
+ const metrics_client_js_1 = require("./metrics-client.js");
34
+ const sanitizing_processor_js_1 = require("./sanitizing-processor.js");
35
+ const service_tracers_js_1 = require("./service-tracers.js");
36
+ function getInstance() {
37
+ return globalThis.__superblocksNodeTelemetryInstance;
38
+ }
39
+ function setInstance(next) {
40
+ globalThis.__superblocksNodeTelemetryInstance = next;
41
+ }
42
+ /**
43
+ * Create a no-op telemetry instance for CI environments.
44
+ *
45
+ * IMPORTANT: We intentionally do NOT use NodeSDK here. NodeSDK.start()
46
+ * auto-configures OTLP exporters for traces, metrics, and logs from
47
+ * environment defaults (localhost:4318). During shutdown, these exporters
48
+ * try to flush to the non-existent collector, causing ECONNREFUSED errors
49
+ * that fail test suites even when all tests pass.
50
+ *
51
+ * Instead, we return a lightweight instance that uses the global OTel API
52
+ * (which returns no-op tracers/meters/loggers when no provider is registered).
53
+ */
54
+ function createNoOpInstance(config, policy) {
55
+ const policyEvaluator = new policy_evaluator_js_1.TelemetryPolicyEvaluator(policy);
56
+ // Use a no-op meter for the metrics client
57
+ const defaultMeter = api_1.metrics.getMeter(config.serviceName, config.serviceVersion);
58
+ return {
59
+ sdk: undefined,
60
+ policyEvaluator,
61
+ // No-op mode has no SDK/exporter, so secondary services collapse to the
62
+ // global (no-op) tracer — options.serviceName is accepted but inert.
63
+ getTracer: (name, _options) => api_1.trace.getTracer(name ?? config.serviceName, config.serviceVersion),
64
+ getMeter: (name) => api_1.metrics.getMeter(name ?? config.serviceName, config.serviceVersion),
65
+ getLogger: (name) => api_logs_1.logs.getLogger(name ?? config.serviceName, config.serviceVersion),
66
+ metricsClient: new metrics_client_js_1.MetricsClient(defaultMeter),
67
+ shutdown: async () => {
68
+ // No-op: nothing to flush or shut down
69
+ },
70
+ };
71
+ }
72
+ /**
73
+ * Fallback logger for SanitizingSpanProcessor when config.logger is not provided.
74
+ * Forwards to console so processor messages are still visible.
75
+ */
76
+ function createConsoleFallbackLogger() {
77
+ const log = (level) => (a, b) => {
78
+ if (typeof a === "string") {
79
+ if (level === "warn")
80
+ console.warn(a);
81
+ else
82
+ console.error(a);
83
+ }
84
+ else {
85
+ if (level === "warn")
86
+ console.warn(b ?? "", a);
87
+ else
88
+ console.error(b ?? "", a);
89
+ }
90
+ };
91
+ return {
92
+ error: log("error"),
93
+ warn: log("warn"),
94
+ };
95
+ }
96
+ /**
97
+ * Validate telemetry configuration.
98
+ *
99
+ * @param config - Configuration to validate
100
+ * @throws Error if configuration is invalid
101
+ */
102
+ function validateNodeTelemetryConfig(config) {
103
+ if (!config.serviceName?.trim()) {
104
+ throw new Error("[Telemetry] serviceName is required and cannot be empty");
105
+ }
106
+ if (!config.serviceVersion?.trim()) {
107
+ throw new Error("[Telemetry] serviceVersion is required and cannot be empty");
108
+ }
109
+ if (!config.environment?.trim()) {
110
+ throw new Error("[Telemetry] environment is required and cannot be empty");
111
+ }
112
+ if (config.otlpUrl) {
113
+ try {
114
+ new URL(config.otlpUrl);
115
+ }
116
+ catch (error) {
117
+ throw new Error(`[Telemetry] Invalid otlpUrl: ${config.otlpUrl} (${error.message})`);
118
+ }
119
+ }
120
+ }
121
+ /**
122
+ * Initialize Node.js telemetry with policy enforcement.
123
+ *
124
+ * This is the ONLY approved way to initialize telemetry in Node.js services.
125
+ * Direct NodeSDK usage outside this package is prohibited.
126
+ *
127
+ * @param config - Service configuration
128
+ * @param policy - Telemetry policy (REQUIRED)
129
+ * @returns Telemetry instance with SDK and utilities
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * import { initNodeTelemetry } from '@superblocksteam/telemetry/node';
134
+ * import { getDefaultPolicy, DeploymentType } from '@superblocksteam/shared';
135
+ *
136
+ * const policy = getDefaultPolicy(DeploymentType.CLOUD_PREM);
137
+ * const telemetry = initNodeTelemetry({
138
+ * serviceName: 'my-service',
139
+ * serviceVersion: '1.0.0',
140
+ * environment: 'production',
141
+ * otlpUrl: 'http://localhost:4318',
142
+ * }, policy);
143
+ *
144
+ * const tracer = telemetry.getTracer();
145
+ * ```
146
+ */
147
+ function initNodeTelemetry(config, policy) {
148
+ // Policy is required
149
+ if (!policy) {
150
+ throw new Error("[Telemetry] Policy is required. Cannot initialize telemetry without a policy.");
151
+ }
152
+ // Validate config
153
+ validateNodeTelemetryConfig(config);
154
+ // Return existing instance if already initialized
155
+ const existing = getInstance();
156
+ if (existing) {
157
+ // Warn if config differs from existing
158
+ const existingPolicy = existing.policyEvaluator.getPolicy();
159
+ if (existingPolicy.deploymentType !== policy.deploymentType) {
160
+ console.warn(`[Telemetry] Already initialized with different deployment type ` +
161
+ `(existing: ${existingPolicy.deploymentType}, requested: ${policy.deploymentType}). ` +
162
+ `Returning existing instance.`);
163
+ }
164
+ return existing;
165
+ }
166
+ // CI environment detection - use no-op telemetry
167
+ if (process.env.CI === "true") {
168
+ const ciMessage = "[Telemetry] CI environment detected, using no-op telemetry";
169
+ if (typeof config.logger?.info === "function") {
170
+ config.logger.info(ciMessage);
171
+ }
172
+ else {
173
+ console.debug(ciMessage);
174
+ }
175
+ const noOp = createNoOpInstance(config, policy);
176
+ setInstance(noOp);
177
+ return noOp;
178
+ }
179
+ const policyEvaluator = new policy_evaluator_js_1.TelemetryPolicyEvaluator(policy);
180
+ const resource = (0, resource_js_1.buildResource)(config);
181
+ // Validate resource has required attributes
182
+ (0, resource_js_1.validateResource)(resource);
183
+ // Track dropped spans for observability
184
+ let droppedSpans = 0;
185
+ const onDrop = (count, reason) => {
186
+ droppedSpans += count;
187
+ console.warn(`[Telemetry] Dropped ${count} spans (${reason}). Total dropped: ${droppedSpans}`);
188
+ };
189
+ // Create trace exporter if URL provided and Tier 2 export is enabled.
190
+ // Traces go through SanitizingSpanProcessor: only contract-compliant spans are exported.
191
+ // Use isExportEnabled (not canExport) - sampling applies at runtime, not initialization.
192
+ let spanProcessor;
193
+ if (config.otlpUrl &&
194
+ policyEvaluator.isExportEnabled(policy_js_1.TelemetryTier.TIER_2_OPERATIONAL)) {
195
+ const tier2Exporter = new resilient_exporter_js_1.ResilientExporter({
196
+ delegate: new exporter_trace_otlp_http_1.OTLPTraceExporter({
197
+ headers: config.otlpHeaders,
198
+ url: `${config.otlpUrl}/v1/traces`,
199
+ }),
200
+ onDrop,
201
+ logger: config.logger,
202
+ });
203
+ const hashConfig = config.traceSanitizerHashConfig ?? null;
204
+ const attributeSets = (0, tier2_traces_js_1.getTraceSanitizerAttributeSets)(policy.deploymentType);
205
+ const traceSanitizer = new trace_sanitizer_js_1.TraceSanitizer({
206
+ hashConfig,
207
+ ...attributeSets,
208
+ });
209
+ const spanProcessorLogger = config.logger ?? createConsoleFallbackLogger();
210
+ spanProcessor = new sanitizing_processor_js_1.SanitizingSpanProcessor(policyEvaluator, sanitizing_processor_js_1.noopSpanProcessor, tier2Exporter, traceSanitizer, spanProcessorLogger);
211
+ // Local-obs override: bypass the sanitizer so the local LGTM stack sees
212
+ // every span (service graph, raw attrs). Same exporter as cloud — only the
213
+ // processor changes.
214
+ if ((0, local_obs_mode_js_1.isLocalObsMode)()) {
215
+ spanProcessor = new sdk_trace_base_1.BatchSpanProcessor(tier2Exporter);
216
+ }
217
+ // Stamp late-known identity (e.g. a dev-server's app/user/org, resolved at
218
+ // connect) onto every span without re-initializing the SDK.
219
+ if (config.dynamicAttributes) {
220
+ spanProcessor = new dynamic_attribute_processor_js_1.DynamicAttributeSpanProcessor(spanProcessor, config.dynamicAttributes);
221
+ }
222
+ }
223
+ // Create metric exporter if enabled
224
+ // Use isExportEnabled (not canExport) - sampling applies at runtime, not initialization
225
+ let metricReader;
226
+ if (config.otlpUrl &&
227
+ config.metricsEnabled !== false &&
228
+ policyEvaluator.isExportEnabled(policy_js_1.TelemetryTier.TIER_2_OPERATIONAL)) {
229
+ metricReader = new sdk_metrics_1.PeriodicExportingMetricReader({
230
+ exporter: new exporter_metrics_otlp_http_1.OTLPMetricExporter({
231
+ headers: config.otlpHeaders,
232
+ temporalityPreference: sdk_metrics_1.AggregationTemporality.DELTA,
233
+ url: `${config.otlpUrl}/v1/metrics`,
234
+ }),
235
+ exportIntervalMillis: 10000, // every 10 seconds
236
+ });
237
+ }
238
+ // Create log processor with policy-aware filtering and sanitization
239
+ // The PolicyAwareLogProcessor wraps the batch processor to:
240
+ // 1. Filter logs by severity level based on export mode (LOCAL_ONLY, ERRORS_ONLY, INFO_AND_ABOVE)
241
+ // 2. Sanitize log bodies and attributes to remove PII, file paths, stack traces
242
+ // 3. Remove forbidden fields that should never be exported
243
+ let logProcessor;
244
+ let loggingPolicy = (0, log_processor_js_1.getLoggingPolicy)(policy);
245
+ // Local-obs override: ship info+ logs to the local LGTM stack regardless of
246
+ // the deployment policy's export mode (cloud-prem is ERRORS_ONLY). Mirrors the
247
+ // span sanitizer bypass above. See isLocalObsMode for why this is local-only.
248
+ if ((0, local_obs_mode_js_1.isLocalObsMode)()) {
249
+ loggingPolicy = {
250
+ ...loggingPolicy,
251
+ exportMode: log_processor_js_1.LogExportMode.INFO_AND_ABOVE,
252
+ };
253
+ }
254
+ if (config.otlpUrl &&
255
+ config.logsEnabled !== false &&
256
+ policyEvaluator.isExportEnabled(policy_js_1.TelemetryTier.TIER_2_OPERATIONAL) &&
257
+ loggingPolicy.exportMode !== log_processor_js_1.LogExportMode.LOCAL_ONLY) {
258
+ const batchProcessor = new sdk_logs_1.BatchLogRecordProcessor({
259
+ exporter: new exporter_logs_otlp_http_1.OTLPLogExporter({
260
+ headers: config.otlpHeaders,
261
+ url: `${config.otlpUrl}/v1/logs`,
262
+ }),
263
+ });
264
+ logProcessor = new log_processor_js_1.PolicyAwareLogProcessor(loggingPolicy, batchProcessor);
265
+ // Same late-known identity as spans: stamp before the policy processor so
266
+ // sanitization sees (and can redact) the identity attributes.
267
+ if (config.dynamicAttributes) {
268
+ logProcessor = new dynamic_attribute_processor_js_1.DynamicAttributeLogRecordProcessor(logProcessor, config.dynamicAttributes);
269
+ }
270
+ }
271
+ // Create the SDK
272
+ // Note: instrumentations typed as unknown[] for flexibility with various OTEL instrumentation packages
273
+ const sdk = new sdk_node_1.NodeSDK({
274
+ resource,
275
+ spanProcessor,
276
+ metricReader,
277
+ logRecordProcessor: logProcessor,
278
+ contextManager: new context_async_hooks_1.AsyncLocalStorageContextManager(),
279
+ textMapPropagator: new core_1.W3CTraceContextPropagator(),
280
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- OTEL instrumentation types vary
281
+ instrumentations: (config.instrumentations ?? []),
282
+ });
283
+ sdk.start();
284
+ const tracesEnabled = spanProcessor
285
+ ? "enabled (Tier 2 sanitized)"
286
+ : "disabled";
287
+ const metricsEnabled = metricReader ? "enabled" : "disabled";
288
+ const logsEnabled = logProcessor ? "enabled" : "disabled";
289
+ if (typeof config.logger?.info === "function") {
290
+ config.logger.info({
291
+ component: "telemetry",
292
+ deploymentType: policy.deploymentType,
293
+ logs: logsEnabled,
294
+ metrics: metricsEnabled,
295
+ serviceName: config.serviceName,
296
+ traces: tracesEnabled,
297
+ }, "Telemetry initialized");
298
+ }
299
+ else {
300
+ console.info(`[Telemetry] Initialized for ${config.serviceName} (${policy.deploymentType})` +
301
+ ` | Traces: ${tracesEnabled} | Metrics: ${metricsEnabled} | Logs: ${logsEnabled}`);
302
+ }
303
+ const defaultMeter = api_1.metrics.getMeter(config.serviceName, config.serviceVersion);
304
+ // Secondary-service tracers (e.g. server LLM-Obs spans under
305
+ // `superblocks-ai-code-gen`). They reuse the SAME span processor so
306
+ // sanitization + export are identical; the SDK owns its lifecycle.
307
+ const serviceTracers = (0, service_tracers_js_1.createServiceTracers)({
308
+ baseResource: resource,
309
+ defaultServiceName: config.serviceName,
310
+ serviceVersion: config.serviceVersion,
311
+ spanProcessor,
312
+ });
313
+ const created = {
314
+ sdk,
315
+ policyEvaluator,
316
+ getTracer: (name, options) => serviceTracers.getTracer(name ?? config.serviceName, options?.serviceName ?? config.serviceName),
317
+ getMeter: (name) => api_1.metrics.getMeter(name ?? config.serviceName, config.serviceVersion),
318
+ getLogger: (name) => api_logs_1.logs.getLogger(name ?? config.serviceName, config.serviceVersion),
319
+ metricsClient: new metrics_client_js_1.MetricsClient(defaultMeter),
320
+ shutdown: async () => {
321
+ try {
322
+ // Best-effort flush of secondary providers; never let it block the
323
+ // primary SDK teardown (which owns the shared span processor).
324
+ try {
325
+ await serviceTracers.shutdown();
326
+ }
327
+ catch (error) {
328
+ console.warn("[Telemetry] serviceTracers shutdown failed:", error);
329
+ }
330
+ await sdk.shutdown();
331
+ }
332
+ finally {
333
+ setInstance(undefined);
334
+ }
335
+ },
336
+ };
337
+ setInstance(created);
338
+ return created;
339
+ }
340
+ /**
341
+ * Get the current telemetry instance.
342
+ *
343
+ * @throws Error if not initialized
344
+ */
345
+ function getTelemetryInstance() {
346
+ const current = getInstance();
347
+ if (!current) {
348
+ throw new Error("[Telemetry] Not initialized. Call initNodeTelemetry() first.");
349
+ }
350
+ return current;
351
+ }
352
+ /**
353
+ * Check if telemetry is initialized.
354
+ */
355
+ function isTelemetryInitialized() {
356
+ return getInstance() !== undefined;
357
+ }
358
+ /**
359
+ * Reset telemetry (for testing only).
360
+ * @internal
361
+ */
362
+ function resetTelemetry() {
363
+ setInstance(undefined);
364
+ }
365
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/node/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Local-observability mode toggle for the Node telemetry pipeline.
3
+ *
4
+ * `SUPERBLOCKS_LOCAL_OBS=true` is set ONLY by local dev tooling (the workspace
5
+ * Tilt profiles and `pnpm start:all`) and NEVER in any deployed environment —
6
+ * it appears in no helm chart, terraform config, or CI workflow. Code gated on
7
+ * this can therefore change export behavior for local development without
8
+ * affecting ee/staging/prod.
9
+ *
10
+ * This is the single source of truth for that gate so the checks can't drift:
11
+ * it must match EXACTLY the string "true" (not truthy, not "1"/"TRUE"), which is
12
+ * what guarantees the local-only log paths (the server's pino->OTLP bridge and
13
+ * the info-level log-export override) never activate in a deployed environment
14
+ * and therefore never duplicate log volume into Datadog.
15
+ */
16
+ export declare function isLocalObsMode(env?: NodeJS.ProcessEnv): boolean;
17
+ //# sourceMappingURL=local-obs-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-obs-mode.d.ts","sourceRoot":"","sources":["../../src/node/local-obs-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAE5E"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isLocalObsMode = isLocalObsMode;
4
+ /**
5
+ * Local-observability mode toggle for the Node telemetry pipeline.
6
+ *
7
+ * `SUPERBLOCKS_LOCAL_OBS=true` is set ONLY by local dev tooling (the workspace
8
+ * Tilt profiles and `pnpm start:all`) and NEVER in any deployed environment —
9
+ * it appears in no helm chart, terraform config, or CI workflow. Code gated on
10
+ * this can therefore change export behavior for local development without
11
+ * affecting ee/staging/prod.
12
+ *
13
+ * This is the single source of truth for that gate so the checks can't drift:
14
+ * it must match EXACTLY the string "true" (not truthy, not "1"/"TRUE"), which is
15
+ * what guarantees the local-only log paths (the server's pino->OTLP bridge and
16
+ * the info-level log-export override) never activate in a deployed environment
17
+ * and therefore never duplicate log volume into Datadog.
18
+ */
19
+ function isLocalObsMode(env = process.env) {
20
+ return env.SUPERBLOCKS_LOCAL_OBS === "true";
21
+ }
22
+ //# sourceMappingURL=local-obs-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-obs-mode.js","sourceRoot":"","sources":["../../src/node/local-obs-mode.ts"],"names":[],"mappings":";;AAeA,wCAEC;AAjBD;;;;;;;;;;;;;;GAcG;AACH,SAAgB,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG;IACjE,OAAO,GAAG,CAAC,qBAAqB,KAAK,MAAM,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Policy-Aware Log Processor
3
+ *
4
+ * Wraps a delegate LogRecordProcessor to provide:
5
+ * 1. Export mode filtering (LOCAL_ONLY, ERRORS_ONLY, INFO_AND_ABOVE)
6
+ * 2. Severity level filtering
7
+ * 3. Log body and attribute sanitization
8
+ *
9
+ * @see https://github.com/superblocksteam/engineering/blob/main/projects/o11y-refactor/epics/epic-c4-logging-strategy.md
10
+ */
11
+ import type { Context } from "@opentelemetry/api";
12
+ import type { LogRecordProcessor, ReadableLogRecord } from "@opentelemetry/sdk-logs";
13
+ import type { SensitivePattern } from "../common/log-sanitizer.js";
14
+ import { TelemetryPolicy } from "../types/policy.js";
15
+ /**
16
+ * Controls what logs are exported via OTEL.
17
+ */
18
+ export declare enum LogExportMode {
19
+ /** No log export - local stdout/stderr only */
20
+ LOCAL_ONLY = "local_only",
21
+ /** Export WARN/ERROR/FATAL only (default for cloud-prem) */
22
+ ERRORS_ONLY = "errors_only",
23
+ /** Export INFO and above (not recommended for cloud-prem) */
24
+ INFO_AND_ABOVE = "info_and_above"
25
+ }
26
+ /**
27
+ * Logging-specific policy configuration.
28
+ * All sanitization is driven by these fields; when they are empty/off, no redaction is applied.
29
+ */
30
+ export interface LoggingPolicyConfig {
31
+ /** What logs to export */
32
+ exportMode: LogExportMode;
33
+ /** Maximum log level for local retention */
34
+ localMaxLevel: "trace" | "debug" | "info" | "warn" | "error" | "fatal";
35
+ /** Patterns to redact from message/body and string values (e.g. JWT, API keys). When empty, no secret redaction. */
36
+ messageSecretPatterns: SensitivePattern[];
37
+ /** Attribute keys (lowercase) that trigger value → [REDACTED]. When empty, no key-based secret redaction. */
38
+ secretFieldNames: Set<string>;
39
+ /** Regex patterns for attribute key names that trigger value → [REDACTED]. When empty, only secretFieldNames apply. */
40
+ secretFieldPatterns: RegExp[];
41
+ /** When true, stack traces in body/attributes are replaced with placeholder. When false, left as-is. */
42
+ redactStackTraces: boolean;
43
+ /** Regex patterns to redact from log content (replaced with [REDACTED]). */
44
+ redactPatterns: RegExp[];
45
+ /** Pattern+replacement rules for sensitive values (path, email). */
46
+ sensitivePatterns: SensitivePattern[];
47
+ /** Fields to exclude from exported logs (key and value omitted). */
48
+ forbiddenFields: Set<string>;
49
+ }
50
+ /**
51
+ * Parse a string value into a LogExportMode, returning undefined if unrecognized.
52
+ * Used to validate SUPERBLOCKS_LOG_EXPORT_MODE env var values.
53
+ */
54
+ export declare function parseLogExportMode(value: string | undefined): LogExportMode | undefined;
55
+ /**
56
+ * Get logging policy based on telemetry policy.
57
+ *
58
+ * @param policy - Telemetry policy
59
+ * @param exportModeOverride - Optional override for the export mode. When set, overrides the
60
+ * deployment-type default (e.g. allows INFO_AND_ABOVE on a cloud-prem trial environment).
61
+ * Cloud-prem sanitization (redaction, forbidden fields) is still applied regardless of override.
62
+ * @returns Logging policy configuration
63
+ */
64
+ export declare function getLoggingPolicy(policy: TelemetryPolicy, exportModeOverride?: LogExportMode): LoggingPolicyConfig;
65
+ /**
66
+ * Returns the effective Pino log level from the current logging policy and env level.
67
+ * 1. Applies exportMode: when ERRORS_ONLY, never below warn so export paths never see INFO/DEBUG.
68
+ * 2. Applies localMaxLevel: caps local retention so we never set the logger more verbose than
69
+ * policy.localMaxLevel (e.g. localMaxLevel "debug" prevents trace from being written locally).
70
+ *
71
+ * Use when policy is available (e.g. after initNodeTelemetry) to sync logger level from policy.
72
+ *
73
+ * @param loggingPolicy - Logging policy (e.g. from getLoggingPolicy(telemetryPolicy))
74
+ * @param envLevel - Level from env (e.g. SUPERBLOCKS_SERVER_LOG_LEVEL)
75
+ * @returns Level to pass to Pino
76
+ */
77
+ export declare function getMinimumPinoLevelFromLoggingPolicy(loggingPolicy: LoggingPolicyConfig, envLevel: string): string;
78
+ /**
79
+ * Returns the effective Pino log level for a deployment given the env-configured level.
80
+ * Used at logger bootstrap when policy is not yet initialized (e.g. server logger module load).
81
+ * Delegates to getMinimumPinoLevelFromLoggingPolicy with a synthetic policy from deployment type
82
+ * so the exportMode → level rule lives in one place.
83
+ *
84
+ * @param envLevel - Level from env (e.g. SUPERBLOCKS_SERVER_LOG_LEVEL)
85
+ * @param deploymentType - Deployment type from env (e.g. SUPERBLOCKS_DEPLOYMENT_TYPE)
86
+ * @param exportModeOverride - Optional override from env (e.g. SUPERBLOCKS_LOG_EXPORT_MODE).
87
+ * When set to a valid LogExportMode, overrides the deployment-type default.
88
+ * NOTE: This function runs at bootstrap before the policy evaluator is initialized,
89
+ * so it cannot verify the Tier 2 export gate. The override only lowers the Pino
90
+ * stdout level; actual telemetry export is gated by getLoggingPolicy() after init,
91
+ * which always enforces !canExportTier2 before applying the override.
92
+ * @returns Level to pass to Pino (envLevel or 'warn' for cloud-prem when envLevel is below warn)
93
+ */
94
+ export declare function getMinimumPinoLevelForDeployment(envLevel: string, deploymentType: string, exportModeOverride?: LogExportMode): string;
95
+ /**
96
+ * Log processor that filters and sanitizes logs based on policy.
97
+ *
98
+ * This processor:
99
+ * 1. Blocks all logs if exportMode is LOCAL_ONLY
100
+ * 2. Filters by severity level based on exportMode
101
+ * 3. Sanitizes log body and attributes before forwarding
102
+ */
103
+ export declare class PolicyAwareLogProcessor implements LogRecordProcessor {
104
+ private readonly policy;
105
+ private readonly delegate;
106
+ constructor(policy: LoggingPolicyConfig, delegate: LogRecordProcessor);
107
+ /**
108
+ * Called when a log record is emitted.
109
+ */
110
+ onEmit(logRecord: ReadableLogRecord, context?: Context): void;
111
+ /** True when policy has no sanitization (cloud passthrough). */
112
+ private isPassthroughPolicy;
113
+ /**
114
+ * Sanitize a log record for export.
115
+ * Mutates the log record in place to preserve OTEL SDK internal state.
116
+ * All redaction is policy-driven; when config is empty/off, content is left as-is.
117
+ */
118
+ private sanitizeLogRecord;
119
+ /**
120
+ * Sanitize log attributes.
121
+ */
122
+ private sanitizeAttributes;
123
+ /**
124
+ * Shutdown the processor.
125
+ */
126
+ shutdown(): Promise<void>;
127
+ /**
128
+ * Force flush pending logs.
129
+ */
130
+ forceFlush(): Promise<void>;
131
+ }
132
+ //# sourceMappingURL=log-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-processor.d.ts","sourceRoot":"","sources":["../../src/node/log-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAoBnE,OAAO,EAAE,eAAe,EAAiB,MAAM,oBAAoB,CAAC;AAOpE;;GAEG;AACH,oBAAY,aAAa;IACvB,+CAA+C;IAC/C,UAAU,eAAe;IACzB,4DAA4D;IAC5D,WAAW,gBAAgB;IAC3B,6DAA6D;IAC7D,cAAc,mBAAmB;CAClC;AAMD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,0BAA0B;IAC1B,UAAU,EAAE,aAAa,CAAC;IAC1B,4CAA4C;IAC5C,aAAa,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACvE,oHAAoH;IACpH,qBAAqB,EAAE,gBAAgB,EAAE,CAAC;IAC1C,6GAA6G;IAC7G,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,uHAAuH;IACvH,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,wGAAwG;IACxG,iBAAiB,EAAE,OAAO,CAAC;IAC3B,4EAA4E;IAC5E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oEAAoE;IACpE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,oEAAoE;IACpE,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,aAAa,GAAG,SAAS,CAS3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,eAAe,EACvB,kBAAkB,CAAC,EAAE,aAAa,GACjC,mBAAmB,CAyDrB;AAiCD;;;;;;;;;;;GAWG;AACH,wBAAgB,oCAAoC,CAClD,aAAa,EAAE,mBAAmB,EAClC,QAAQ,EAAE,MAAM,GACf,MAAM,CAiBR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,kBAAkB,CAAC,EAAE,aAAa,GACjC,MAAM,CAsBR;AAuDD;;;;;;;GAOG;AACH,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAElC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB;IAKrE;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAqB7D,gEAAgE;IAChE,OAAO,CAAC,mBAAmB;IAa3B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IA6CzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuE1B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}