@superblocksteam/telemetry 2.0.171 → 2.0.173-next.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 (304) hide show
  1. package/dist/browser/console-logging.js +2 -7
  2. package/dist/browser/console-logging.js.map +1 -1
  3. package/dist/browser/early-console-buffer.js +12 -14
  4. package/dist/browser/early-console-buffer.js.map +1 -1
  5. package/dist/browser/index.js +12 -41
  6. package/dist/browser/index.js.map +1 -1
  7. package/dist/browser/init.d.ts +1 -1
  8. package/dist/browser/init.d.ts.map +1 -1
  9. package/dist/browser/init.js +42 -52
  10. package/dist/browser/init.js.map +1 -1
  11. package/dist/browser/instrumentations.js +11 -15
  12. package/dist/browser/instrumentations.js.map +1 -1
  13. package/dist/browser/logs.d.ts +1 -1
  14. package/dist/browser/logs.d.ts.map +1 -1
  15. package/dist/browser/logs.js +11 -18
  16. package/dist/browser/logs.js.map +1 -1
  17. package/dist/browser/metrics.js +9 -12
  18. package/dist/browser/metrics.js.map +1 -1
  19. package/dist/browser/resilient-exporter.d.ts +1 -1
  20. package/dist/browser/resilient-exporter.d.ts.map +1 -1
  21. package/dist/browser/resilient-exporter.js +8 -12
  22. package/dist/browser/resilient-exporter.js.map +1 -1
  23. package/dist/browser/sanitizer.js +2 -6
  24. package/dist/browser/sanitizer.js.map +1 -1
  25. package/dist/browser/traced-socket.js +14 -18
  26. package/dist/browser/traced-socket.js.map +1 -1
  27. package/dist/common/contracts/tier2-traces.js +33 -44
  28. package/dist/common/contracts/tier2-traces.js.map +1 -1
  29. package/dist/common/deployment-type.js +5 -8
  30. package/dist/common/deployment-type.js.map +1 -1
  31. package/dist/common/guardrails.js +26 -38
  32. package/dist/common/guardrails.js.map +1 -1
  33. package/dist/common/index.js +8 -24
  34. package/dist/common/index.js.map +1 -1
  35. package/dist/common/log-sanitizer.js +37 -55
  36. package/dist/common/log-sanitizer.js.map +1 -1
  37. package/dist/common/policy-evaluator.d.ts +1 -1
  38. package/dist/common/policy-evaluator.d.ts.map +1 -1
  39. package/dist/common/policy-evaluator.js +5 -9
  40. package/dist/common/policy-evaluator.js.map +1 -1
  41. package/dist/common/resource.js +18 -25
  42. package/dist/common/resource.js.map +1 -1
  43. package/dist/common/tier-hints.js +12 -22
  44. package/dist/common/tier-hints.js.map +1 -1
  45. package/dist/common/trace-sanitizer.js +6 -10
  46. package/dist/common/trace-sanitizer.js.map +1 -1
  47. package/dist/common/traced-socket-types.js +1 -2
  48. package/dist/common/traced-socket-types.js.map +1 -1
  49. package/dist/index.js +6 -38
  50. package/dist/index.js.map +1 -1
  51. package/dist/lint/forbidden-attributes.js +19 -24
  52. package/dist/lint/forbidden-attributes.js.map +1 -1
  53. package/dist/lint/index.js +1 -8
  54. package/dist/lint/index.js.map +1 -1
  55. package/dist/llmobs/index.js +2 -9
  56. package/dist/llmobs/index.js.map +1 -1
  57. package/dist/llmobs/tier1-exporter.js +6 -12
  58. package/dist/llmobs/tier1-exporter.js.map +1 -1
  59. package/dist/llmobs/tier2-summarizer.js +1 -5
  60. package/dist/llmobs/tier2-summarizer.js.map +1 -1
  61. package/dist/node/dynamic-attribute-processor.js +2 -7
  62. package/dist/node/dynamic-attribute-processor.js.map +1 -1
  63. package/dist/node/exporters/resilient-exporter.d.ts +1 -1
  64. package/dist/node/exporters/resilient-exporter.d.ts.map +1 -1
  65. package/dist/node/exporters/resilient-exporter.js +8 -12
  66. package/dist/node/exporters/resilient-exporter.js.map +1 -1
  67. package/dist/node/index.js +7 -26
  68. package/dist/node/index.js.map +1 -1
  69. package/dist/node/init.d.ts +3 -3
  70. package/dist/node/init.d.ts.map +1 -1
  71. package/dist/node/init.js +66 -72
  72. package/dist/node/init.js.map +1 -1
  73. package/dist/node/local-obs-mode.js +1 -4
  74. package/dist/node/local-obs-mode.js.map +1 -1
  75. package/dist/node/log-processor.d.ts +1 -1
  76. package/dist/node/log-processor.d.ts.map +1 -1
  77. package/dist/node/log-processor.js +47 -55
  78. package/dist/node/log-processor.js.map +1 -1
  79. package/dist/node/metrics-client.js +1 -5
  80. package/dist/node/metrics-client.js.map +1 -1
  81. package/dist/node/safe-logger.js +8 -12
  82. package/dist/node/safe-logger.js.map +1 -1
  83. package/dist/node/sanitizing-processor.d.ts +2 -2
  84. package/dist/node/sanitizing-processor.d.ts.map +1 -1
  85. package/dist/node/sanitizing-processor.js +6 -10
  86. package/dist/node/sanitizing-processor.js.map +1 -1
  87. package/dist/node/service-tracers.js +7 -10
  88. package/dist/node/service-tracers.js.map +1 -1
  89. package/dist/node/traced-socket.d.ts +3 -3
  90. package/dist/node/traced-socket.d.ts.map +1 -1
  91. package/dist/node/traced-socket.js +48 -52
  92. package/dist/node/traced-socket.js.map +1 -1
  93. package/dist/npm-registry/emitter.js +34 -47
  94. package/dist/npm-registry/emitter.js.map +1 -1
  95. package/dist/npm-registry/index.js +3 -19
  96. package/dist/npm-registry/index.js.map +1 -1
  97. package/dist/npm-registry/sanitize.js +16 -27
  98. package/dist/npm-registry/sanitize.js.map +1 -1
  99. package/dist/npm-registry/spans.js +7 -12
  100. package/dist/npm-registry/spans.js.map +1 -1
  101. package/dist/testing/in-memory-exporter.d.ts +1 -1
  102. package/dist/testing/in-memory-exporter.d.ts.map +1 -1
  103. package/dist/testing/in-memory-exporter.js +6 -12
  104. package/dist/testing/in-memory-exporter.js.map +1 -1
  105. package/dist/testing/index.js +3 -15
  106. package/dist/testing/index.js.map +1 -1
  107. package/dist/testing/metrics-capture.js +12 -15
  108. package/dist/testing/metrics-capture.js.map +1 -1
  109. package/dist/testing/test-init.js +24 -31
  110. package/dist/testing/test-init.js.map +1 -1
  111. package/dist/types/index.js +1 -17
  112. package/dist/types/index.js.map +1 -1
  113. package/dist/types/policy.js +21 -24
  114. package/dist/types/policy.js.map +1 -1
  115. package/package.json +11 -17
  116. package/dist-esm/browser/console-logging.d.ts +0 -18
  117. package/dist-esm/browser/console-logging.d.ts.map +0 -1
  118. package/dist-esm/browser/console-logging.js +0 -27
  119. package/dist-esm/browser/console-logging.js.map +0 -1
  120. package/dist-esm/browser/early-console-buffer.d.ts +0 -49
  121. package/dist-esm/browser/early-console-buffer.d.ts.map +0 -1
  122. package/dist-esm/browser/early-console-buffer.js +0 -181
  123. package/dist-esm/browser/early-console-buffer.js.map +0 -1
  124. package/dist-esm/browser/index.d.ts +0 -18
  125. package/dist-esm/browser/index.d.ts.map +0 -1
  126. package/dist-esm/browser/index.js +0 -23
  127. package/dist-esm/browser/index.js.map +0 -1
  128. package/dist-esm/browser/init.d.ts +0 -100
  129. package/dist-esm/browser/init.d.ts.map +0 -1
  130. package/dist-esm/browser/init.js +0 -317
  131. package/dist-esm/browser/init.js.map +0 -1
  132. package/dist-esm/browser/instrumentations.d.ts +0 -67
  133. package/dist-esm/browser/instrumentations.d.ts.map +0 -1
  134. package/dist-esm/browser/instrumentations.js +0 -79
  135. package/dist-esm/browser/instrumentations.js.map +0 -1
  136. package/dist-esm/browser/logs.d.ts +0 -57
  137. package/dist-esm/browser/logs.d.ts.map +0 -1
  138. package/dist-esm/browser/logs.js +0 -80
  139. package/dist-esm/browser/logs.js.map +0 -1
  140. package/dist-esm/browser/metrics.d.ts +0 -29
  141. package/dist-esm/browser/metrics.d.ts.map +0 -1
  142. package/dist-esm/browser/metrics.js +0 -46
  143. package/dist-esm/browser/metrics.js.map +0 -1
  144. package/dist-esm/browser/resilient-exporter.d.ts +0 -43
  145. package/dist-esm/browser/resilient-exporter.d.ts.map +0 -1
  146. package/dist-esm/browser/resilient-exporter.js +0 -84
  147. package/dist-esm/browser/resilient-exporter.js.map +0 -1
  148. package/dist-esm/browser/sanitizer.d.ts +0 -35
  149. package/dist-esm/browser/sanitizer.d.ts.map +0 -1
  150. package/dist-esm/browser/sanitizer.js +0 -207
  151. package/dist-esm/browser/sanitizer.js.map +0 -1
  152. package/dist-esm/browser/traced-socket.d.ts +0 -102
  153. package/dist-esm/browser/traced-socket.d.ts.map +0 -1
  154. package/dist-esm/browser/traced-socket.js +0 -199
  155. package/dist-esm/browser/traced-socket.js.map +0 -1
  156. package/dist-esm/common/contracts/tier2-traces.d.ts +0 -116
  157. package/dist-esm/common/contracts/tier2-traces.d.ts.map +0 -1
  158. package/dist-esm/common/contracts/tier2-traces.js +0 -725
  159. package/dist-esm/common/contracts/tier2-traces.js.map +0 -1
  160. package/dist-esm/common/deployment-type.d.ts +0 -18
  161. package/dist-esm/common/deployment-type.d.ts.map +0 -1
  162. package/dist-esm/common/deployment-type.js +0 -27
  163. package/dist-esm/common/deployment-type.js.map +0 -1
  164. package/dist-esm/common/guardrails.d.ts +0 -132
  165. package/dist-esm/common/guardrails.d.ts.map +0 -1
  166. package/dist-esm/common/guardrails.js +0 -230
  167. package/dist-esm/common/guardrails.js.map +0 -1
  168. package/dist-esm/common/index.d.ts +0 -17
  169. package/dist-esm/common/index.d.ts.map +0 -1
  170. package/dist-esm/common/index.js +0 -17
  171. package/dist-esm/common/index.js.map +0 -1
  172. package/dist-esm/common/log-sanitizer.d.ts +0 -163
  173. package/dist-esm/common/log-sanitizer.d.ts.map +0 -1
  174. package/dist-esm/common/log-sanitizer.js +0 -745
  175. package/dist-esm/common/log-sanitizer.js.map +0 -1
  176. package/dist-esm/common/policy-evaluator.d.ts +0 -103
  177. package/dist-esm/common/policy-evaluator.d.ts.map +0 -1
  178. package/dist-esm/common/policy-evaluator.js +0 -196
  179. package/dist-esm/common/policy-evaluator.js.map +0 -1
  180. package/dist-esm/common/resource.d.ts +0 -79
  181. package/dist-esm/common/resource.d.ts.map +0 -1
  182. package/dist-esm/common/resource.js +0 -121
  183. package/dist-esm/common/resource.js.map +0 -1
  184. package/dist-esm/common/tier-hints.d.ts +0 -182
  185. package/dist-esm/common/tier-hints.d.ts.map +0 -1
  186. package/dist-esm/common/tier-hints.js +0 -199
  187. package/dist-esm/common/tier-hints.js.map +0 -1
  188. package/dist-esm/common/trace-sanitizer.d.ts +0 -82
  189. package/dist-esm/common/trace-sanitizer.d.ts.map +0 -1
  190. package/dist-esm/common/trace-sanitizer.js +0 -230
  191. package/dist-esm/common/trace-sanitizer.js.map +0 -1
  192. package/dist-esm/common/traced-socket-types.d.ts +0 -43
  193. package/dist-esm/common/traced-socket-types.d.ts.map +0 -1
  194. package/dist-esm/common/traced-socket-types.js +0 -16
  195. package/dist-esm/common/traced-socket-types.js.map +0 -1
  196. package/dist-esm/index.d.ts +0 -45
  197. package/dist-esm/index.d.ts.map +0 -1
  198. package/dist-esm/index.js +0 -56
  199. package/dist-esm/index.js.map +0 -1
  200. package/dist-esm/lint/forbidden-attributes.d.ts +0 -149
  201. package/dist-esm/lint/forbidden-attributes.d.ts.map +0 -1
  202. package/dist-esm/lint/forbidden-attributes.js +0 -210
  203. package/dist-esm/lint/forbidden-attributes.js.map +0 -1
  204. package/dist-esm/lint/index.d.ts +0 -9
  205. package/dist-esm/lint/index.d.ts.map +0 -1
  206. package/dist-esm/lint/index.js +0 -9
  207. package/dist-esm/lint/index.js.map +0 -1
  208. package/dist-esm/llmobs/index.d.ts +0 -22
  209. package/dist-esm/llmobs/index.d.ts.map +0 -1
  210. package/dist-esm/llmobs/index.js +0 -22
  211. package/dist-esm/llmobs/index.js.map +0 -1
  212. package/dist-esm/llmobs/tier1-exporter.d.ts +0 -146
  213. package/dist-esm/llmobs/tier1-exporter.d.ts.map +0 -1
  214. package/dist-esm/llmobs/tier1-exporter.js +0 -193
  215. package/dist-esm/llmobs/tier1-exporter.js.map +0 -1
  216. package/dist-esm/llmobs/tier2-summarizer.d.ts +0 -268
  217. package/dist-esm/llmobs/tier2-summarizer.d.ts.map +0 -1
  218. package/dist-esm/llmobs/tier2-summarizer.js +0 -652
  219. package/dist-esm/llmobs/tier2-summarizer.js.map +0 -1
  220. package/dist-esm/node/dynamic-attribute-processor.d.ts +0 -43
  221. package/dist-esm/node/dynamic-attribute-processor.d.ts.map +0 -1
  222. package/dist-esm/node/dynamic-attribute-processor.js +0 -74
  223. package/dist-esm/node/dynamic-attribute-processor.js.map +0 -1
  224. package/dist-esm/node/exporters/resilient-exporter.d.ts +0 -91
  225. package/dist-esm/node/exporters/resilient-exporter.d.ts.map +0 -1
  226. package/dist-esm/node/exporters/resilient-exporter.js +0 -132
  227. package/dist-esm/node/exporters/resilient-exporter.js.map +0 -1
  228. package/dist-esm/node/index.d.ts +0 -13
  229. package/dist-esm/node/index.d.ts.map +0 -1
  230. package/dist-esm/node/index.js +0 -13
  231. package/dist-esm/node/index.js.map +0 -1
  232. package/dist-esm/node/init.d.ts +0 -97
  233. package/dist-esm/node/init.d.ts.map +0 -1
  234. package/dist-esm/node/init.js +0 -359
  235. package/dist-esm/node/init.js.map +0 -1
  236. package/dist-esm/node/local-obs-mode.d.ts +0 -17
  237. package/dist-esm/node/local-obs-mode.d.ts.map +0 -1
  238. package/dist-esm/node/local-obs-mode.js +0 -19
  239. package/dist-esm/node/local-obs-mode.js.map +0 -1
  240. package/dist-esm/node/log-processor.d.ts +0 -132
  241. package/dist-esm/node/log-processor.d.ts.map +0 -1
  242. package/dist-esm/node/log-processor.js +0 -389
  243. package/dist-esm/node/log-processor.js.map +0 -1
  244. package/dist-esm/node/metrics-client.d.ts +0 -88
  245. package/dist-esm/node/metrics-client.d.ts.map +0 -1
  246. package/dist-esm/node/metrics-client.js +0 -205
  247. package/dist-esm/node/metrics-client.js.map +0 -1
  248. package/dist-esm/node/safe-logger.d.ts +0 -55
  249. package/dist-esm/node/safe-logger.d.ts.map +0 -1
  250. package/dist-esm/node/safe-logger.js +0 -154
  251. package/dist-esm/node/safe-logger.js.map +0 -1
  252. package/dist-esm/node/sanitizing-processor.d.ts +0 -67
  253. package/dist-esm/node/sanitizing-processor.d.ts.map +0 -1
  254. package/dist-esm/node/sanitizing-processor.js +0 -163
  255. package/dist-esm/node/sanitizing-processor.js.map +0 -1
  256. package/dist-esm/node/service-tracers.d.ts +0 -52
  257. package/dist-esm/node/service-tracers.d.ts.map +0 -1
  258. package/dist-esm/node/service-tracers.js +0 -78
  259. package/dist-esm/node/service-tracers.js.map +0 -1
  260. package/dist-esm/node/traced-socket.d.ts +0 -120
  261. package/dist-esm/node/traced-socket.d.ts.map +0 -1
  262. package/dist-esm/node/traced-socket.js +0 -334
  263. package/dist-esm/node/traced-socket.js.map +0 -1
  264. package/dist-esm/npm-registry/emitter.d.ts +0 -330
  265. package/dist-esm/npm-registry/emitter.d.ts.map +0 -1
  266. package/dist-esm/npm-registry/emitter.js +0 -546
  267. package/dist-esm/npm-registry/emitter.js.map +0 -1
  268. package/dist-esm/npm-registry/index.d.ts +0 -12
  269. package/dist-esm/npm-registry/index.d.ts.map +0 -1
  270. package/dist-esm/npm-registry/index.js +0 -12
  271. package/dist-esm/npm-registry/index.js.map +0 -1
  272. package/dist-esm/npm-registry/sanitize.d.ts +0 -174
  273. package/dist-esm/npm-registry/sanitize.d.ts.map +0 -1
  274. package/dist-esm/npm-registry/sanitize.js +0 -331
  275. package/dist-esm/npm-registry/sanitize.js.map +0 -1
  276. package/dist-esm/npm-registry/spans.d.ts +0 -61
  277. package/dist-esm/npm-registry/spans.d.ts.map +0 -1
  278. package/dist-esm/npm-registry/spans.js +0 -86
  279. package/dist-esm/npm-registry/spans.js.map +0 -1
  280. package/dist-esm/package.json +0 -1
  281. package/dist-esm/testing/in-memory-exporter.d.ts +0 -179
  282. package/dist-esm/testing/in-memory-exporter.d.ts.map +0 -1
  283. package/dist-esm/testing/in-memory-exporter.js +0 -250
  284. package/dist-esm/testing/in-memory-exporter.js.map +0 -1
  285. package/dist-esm/testing/index.d.ts +0 -9
  286. package/dist-esm/testing/index.d.ts.map +0 -1
  287. package/dist-esm/testing/index.js +0 -9
  288. package/dist-esm/testing/index.js.map +0 -1
  289. package/dist-esm/testing/metrics-capture.d.ts +0 -29
  290. package/dist-esm/testing/metrics-capture.d.ts.map +0 -1
  291. package/dist-esm/testing/metrics-capture.js +0 -71
  292. package/dist-esm/testing/metrics-capture.js.map +0 -1
  293. package/dist-esm/testing/test-init.d.ts +0 -80
  294. package/dist-esm/testing/test-init.d.ts.map +0 -1
  295. package/dist-esm/testing/test-init.js +0 -137
  296. package/dist-esm/testing/test-init.js.map +0 -1
  297. package/dist-esm/types/index.d.ts +0 -84
  298. package/dist-esm/types/index.d.ts.map +0 -1
  299. package/dist-esm/types/index.js +0 -7
  300. package/dist-esm/types/index.js.map +0 -1
  301. package/dist-esm/types/policy.d.ts +0 -92
  302. package/dist-esm/types/policy.d.ts.map +0 -1
  303. package/dist-esm/types/policy.js +0 -122
  304. package/dist-esm/types/policy.js.map +0 -1
@@ -1,230 +0,0 @@
1
- /**
2
- * Tier 2 Trace Sanitizer
3
- *
4
- * Sanitizes spans for Tier 2 export per epic-a3-sanitized-traces.
5
- * - Drops spans for high-volume, low-value routes (health, metrics)
6
- * - Drops spans not in the contract
7
- * - Drops forbidden attributes (PII, Tier 1 content)
8
- * - Drops high-cardinality attributes (e.g. binding_keys) when configured
9
- * - Hashes configured attributes using keyed HMAC (when hash config provided)
10
- * - Only includes attributes in the allowlist for each span type
11
- */
12
- import { createHmac } from "node:crypto";
13
- /** http.route values for which we never export spans (high volume, no operational value). */
14
- const DROPPED_HTTP_ROUTES = new Set([
15
- "/health/liveness",
16
- "/health/readiness",
17
- "/metrics",
18
- "/api/v1/metrics",
19
- ]);
20
- import { getAttributeName, TIER_2_TRACE_CONTRACT, } from "./contracts/tier2-traces.js";
21
- /** Normalize span name for pattern matching. Server uses "POST /path" but contract uses "HTTP POST *". */
22
- function normalizeSpanNameForMatching(name) {
23
- const candidates = [name];
24
- const methodPrefix = /^(GET|POST|PUT|PATCH|DELETE)\s+/i;
25
- const match = name.match(methodPrefix);
26
- if (match) {
27
- const method = match[1].toUpperCase();
28
- candidates.push(`HTTP ${method} ${name.slice(match[0].length)}`);
29
- }
30
- return candidates;
31
- }
32
- export class TraceSanitizer {
33
- contractMap;
34
- hashConfig;
35
- forbiddenAttributes;
36
- droppedAttributes;
37
- hashedAttributes;
38
- attributeAllowlistPassthrough;
39
- constructor(options) {
40
- this.hashConfig = options.hashConfig;
41
- this.forbiddenAttributes = options.forbiddenAttributes;
42
- this.droppedAttributes = options.droppedAttributes;
43
- this.hashedAttributes = options.hashedAttributes;
44
- this.attributeAllowlistPassthrough =
45
- options.attributeAllowlistPassthrough ?? false;
46
- const definitions = options.spanDefinitions ?? TIER_2_TRACE_CONTRACT;
47
- this.contractMap = new Map();
48
- for (const def of definitions) {
49
- this.contractMap.set(def.name, def);
50
- }
51
- }
52
- /**
53
- * Check if a span should be exported to Tier 2.
54
- */
55
- shouldExport(span) {
56
- return this.findMatchingDefinition(span.name) !== undefined;
57
- }
58
- /**
59
- * Sanitize span attributes for Tier 2 export.
60
- * Returns null if span should not be exported.
61
- *
62
- * Returns a ReadableSpan-like object that delegates to the original span for
63
- * spanContext() and other methods (spread does not copy prototype methods,
64
- * and the OTLP exporter calls span.spanContext()).
65
- */
66
- sanitize(span) {
67
- const httpRoute = span.attributes["http.route"];
68
- const routeStr = typeof httpRoute === "string"
69
- ? httpRoute
70
- : typeof httpRoute === "number"
71
- ? String(httpRoute)
72
- : undefined;
73
- if (routeStr !== undefined && DROPPED_HTTP_ROUTES.has(routeStr)) {
74
- return null;
75
- }
76
- const definition = this.findMatchingDefinition(span.name);
77
- if (!definition) {
78
- return null;
79
- }
80
- const sanitizedAttributes = this.sanitizeAttributes(span.attributes, definition.allowedAttributes);
81
- return {
82
- name: span.name,
83
- kind: span.kind,
84
- spanContext: () => span.spanContext(),
85
- // Preserve parent context exactly as OTLP serializers consume it.
86
- // In current OTel SDK versions, parent linkage is read from
87
- // `parentSpanContext` (not `parentSpanId`).
88
- // https://github.com/open-telemetry/opentelemetry-js/blob/main/experimental/packages/otlp-transformer/src/trace/internal.ts#L44
89
- parentSpanContext: span.parentSpanContext,
90
- startTime: span.startTime,
91
- endTime: span.endTime,
92
- status: span.status,
93
- attributes: sanitizedAttributes,
94
- resource: span.resource,
95
- instrumentationScope: span.instrumentationScope,
96
- events: this.sanitizeEvents(span.events),
97
- links: this.sanitizeLinks(span.links),
98
- duration: span.duration,
99
- ended: span.ended,
100
- droppedAttributesCount: span.droppedAttributesCount,
101
- droppedEventsCount: span.droppedEventsCount,
102
- droppedLinksCount: span.droppedLinksCount,
103
- };
104
- }
105
- findMatchingDefinition(spanName) {
106
- const candidates = normalizeSpanNameForMatching(spanName);
107
- for (const name of candidates) {
108
- if (this.contractMap.has(name)) {
109
- return this.contractMap.get(name);
110
- }
111
- for (const [pattern, def] of this.contractMap) {
112
- if (this.matchesPattern(name, pattern)) {
113
- return def;
114
- }
115
- }
116
- }
117
- return undefined;
118
- }
119
- /**
120
- * Pattern matching: "*" matches any name; suffix wildcards (e.g. "HTTP POST *", "ws.*").
121
- * For "HTTP POST *", matches "HTTP POST" (exact) or "HTTP POST /path" (prefix + rest).
122
- */
123
- matchesPattern(name, pattern) {
124
- if (pattern === "*") {
125
- return true;
126
- }
127
- if (pattern.endsWith("*")) {
128
- const prefix = pattern.slice(0, -1);
129
- const prefixNoSpace = prefix.trimEnd();
130
- return (name === prefixNoSpace ||
131
- name === prefix ||
132
- (prefix.length > 0 && name.startsWith(prefix)));
133
- }
134
- return name === pattern;
135
- }
136
- /**
137
- * Sanitize span links for Tier 2: link attributes are filtered the same way as
138
- * event attributes (forbidden dropped, high-cardinality dropped, hashed values).
139
- * Link context (trace/span IDs) is preserved.
140
- */
141
- sanitizeLinks(links) {
142
- if (!links?.length) {
143
- return links ?? [];
144
- }
145
- return links.map((link) => ({
146
- ...link,
147
- attributes: this.sanitizeEventOrLinkAttributes(link.attributes ?? {}),
148
- }));
149
- }
150
- /**
151
- * Sanitize span events for Tier 2: event attributes are filtered the same way as
152
- * span attributes (forbidden dropped, high-cardinality dropped, hashed values).
153
- * Event names and timestamps are preserved.
154
- */
155
- sanitizeEvents(events) {
156
- if (!events?.length) {
157
- return events ?? [];
158
- }
159
- return events.map((event) => ({
160
- name: event.name,
161
- time: event.time,
162
- attributes: this.sanitizeEventOrLinkAttributes(event.attributes ?? {}),
163
- }));
164
- }
165
- /**
166
- * Sanitize attributes that appear on events or links (no allowlist; only
167
- * drop forbidden/high-cardinality and hash hashed).
168
- */
169
- sanitizeEventOrLinkAttributes(attributes) {
170
- const result = {};
171
- for (const [key, value] of Object.entries(attributes)) {
172
- if (this.forbiddenAttributes.has(key)) {
173
- continue;
174
- }
175
- if (this.droppedAttributes.has(key)) {
176
- continue;
177
- }
178
- if (this.hashedAttributes.has(key)) {
179
- result[key] = this.hashValue(String(value));
180
- continue;
181
- }
182
- result[key] = value;
183
- }
184
- return result;
185
- }
186
- sanitizeAttributes(attributes, allowedAttrs) {
187
- const result = {};
188
- const allowedMap = new Map();
189
- for (const attr of allowedAttrs) {
190
- allowedMap.set(getAttributeName(attr), attr);
191
- }
192
- for (const [key, value] of Object.entries(attributes)) {
193
- if (this.forbiddenAttributes.has(key)) {
194
- continue;
195
- }
196
- if (this.droppedAttributes.has(key)) {
197
- continue;
198
- }
199
- if (this.hashedAttributes.has(key)) {
200
- result[key] = this.hashValue(String(value));
201
- continue;
202
- }
203
- if (this.attributeAllowlistPassthrough) {
204
- result[key] = value;
205
- continue;
206
- }
207
- if (!allowedMap.has(key)) {
208
- continue;
209
- }
210
- const attrDef = allowedMap.get(key);
211
- if (typeof attrDef === "object" && attrDef.allowedValues != null) {
212
- if (!attrDef.allowedValues.includes(String(value))) {
213
- continue;
214
- }
215
- }
216
- result[key] = value;
217
- }
218
- return result;
219
- }
220
- hashValue(value) {
221
- if (!this.hashConfig) {
222
- return "[redacted]";
223
- }
224
- const hmac = createHmac(this.hashConfig.algorithm, this.hashConfig.secretKey);
225
- hmac.update(this.hashConfig.salt);
226
- hmac.update(value);
227
- return hmac.digest("hex").slice(0, this.hashConfig.outputLengthBytes * 2);
228
- }
229
- }
230
- //# sourceMappingURL=trace-sanitizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trace-sanitizer.js","sourceRoot":"","sources":["../../src/common/trace-sanitizer.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- /**
2
- * Shared TracedSocket types for WebSocket message envelopes.
3
- *
4
- * Both the browser (TracedSocket in telemetry/browser) and the server
5
- * (TracedSocket in telemetry/node) inject and extract trace context using
6
- * these field names. Keeping them in one place ensures the two sides speak
7
- * the same envelope protocol so traces link correctly end-to-end.
8
- *
9
- * Envelope structure mirrors @superblocksteam/shared SocketRequest:
10
- * { request?: { method, payload, id, traceparent?, tracestate?, ... } }
11
- *
12
- * The W3C Trace Context propagator writes/reads exactly these two fields.
13
- * See: https://www.w3.org/TR/trace-context/
14
- */
15
- /**
16
- * W3C Trace Context fields that live inside a socket message's request object.
17
- * The propagator uses these as the carrier for context injection/extraction.
18
- */
19
- export interface SocketTraceContext {
20
- traceparent?: string;
21
- tracestate?: string;
22
- }
23
- /**
24
- * Minimal shape of the request portion of a socket message envelope.
25
- * Both browser and server code passes this object as the propagation carrier.
26
- */
27
- export interface SocketRequestEnvelope extends SocketTraceContext {
28
- method?: string;
29
- id?: number;
30
- [key: string]: unknown;
31
- }
32
- /**
33
- * Minimal shape of the full socket message envelope.
34
- * Request messages carry trace context; response messages do not.
35
- */
36
- export interface SocketMessageEnvelope {
37
- request?: SocketRequestEnvelope;
38
- response?: {
39
- id?: number;
40
- [key: string]: unknown;
41
- };
42
- }
43
- //# sourceMappingURL=traced-socket-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traced-socket-types.d.ts","sourceRoot":"","sources":["../../src/common/traced-socket-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,QAAQ,CAAC,EAAE;QACT,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Shared TracedSocket types for WebSocket message envelopes.
3
- *
4
- * Both the browser (TracedSocket in telemetry/browser) and the server
5
- * (TracedSocket in telemetry/node) inject and extract trace context using
6
- * these field names. Keeping them in one place ensures the two sides speak
7
- * the same envelope protocol so traces link correctly end-to-end.
8
- *
9
- * Envelope structure mirrors @superblocksteam/shared SocketRequest:
10
- * { request?: { method, payload, id, traceparent?, tracestate?, ... } }
11
- *
12
- * The W3C Trace Context propagator writes/reads exactly these two fields.
13
- * See: https://www.w3.org/TR/trace-context/
14
- */
15
- export {};
16
- //# sourceMappingURL=traced-socket-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traced-socket-types.js","sourceRoot":"","sources":["../../src/common/traced-socket-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -1,45 +0,0 @@
1
- /**
2
- * @superblocksteam/telemetry
3
- *
4
- * Canonical telemetry bootstrap package for all Superblocks services.
5
- * Provides policy-aware OpenTelemetry initialization with tier-based routing.
6
- *
7
- * This package is the ONLY approved way to initialize telemetry.
8
- * Direct usage of NodeSDK or WebTracerProvider is prohibited.
9
- *
10
- * ## Usage
11
- *
12
- * ### Node.js Services
13
- *
14
- * ```typescript
15
- * import { initNodeTelemetry } from '@superblocksteam/telemetry/node';
16
- * import { getDefaultPolicy, DeploymentType } from '@superblocksteam/shared';
17
- *
18
- * const policy = getDefaultPolicy(DeploymentType.CLOUD_PREM);
19
- * const telemetry = initNodeTelemetry({
20
- * serviceName: 'my-service',
21
- * serviceVersion: '1.0.0',
22
- * environment: 'production',
23
- * otlpUrl: 'http://localhost:4318',
24
- * }, policy);
25
- * ```
26
- *
27
- * ### Browser
28
- *
29
- * ```typescript
30
- * import { initBrowserTelemetry } from '@superblocksteam/telemetry/browser';
31
- * ```
32
- *
33
- * ### Testing
34
- *
35
- * ```typescript
36
- * import { initTestTelemetry } from '@superblocksteam/telemetry/testing';
37
- * ```
38
- */
39
- export * from "./types/index.js";
40
- export * from "./common/index.js";
41
- export * from "./npm-registry/index.js";
42
- export * from "./llmobs/index.js";
43
- export { REDACTED_PLACEHOLDER } from "./common/index.js";
44
- export { createSafeLogger, getLoggingPolicy, getMinimumPinoLevelForDeployment, getMinimumPinoLevelFromLoggingPolicy, parseLogExportMode, getTelemetryInstance, initNodeTelemetry, isLocalObsMode, isTelemetryInitialized, LogExportMode, redactForbiddenFields, resetTelemetry, type NodeTelemetryInstance, type LoggingPolicyConfig, type SafeLoggerLike, MetricsClient, type Labels, type CounterHandle, type CounterOptions, type GaugeHandle, type HistogramHandle, type HistogramOptions, TracedSocket, type TracedSocketConfig, type TracedSocketOptions, } from "./node/index.js";
45
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,mBAAmB,CAAC;AAIlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gCAAgC,EAChC,oCAAoC,EACpC,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,aAAa,EACb,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC"}
package/dist-esm/index.js DELETED
@@ -1,56 +0,0 @@
1
- /**
2
- * @superblocksteam/telemetry
3
- *
4
- * Canonical telemetry bootstrap package for all Superblocks services.
5
- * Provides policy-aware OpenTelemetry initialization with tier-based routing.
6
- *
7
- * This package is the ONLY approved way to initialize telemetry.
8
- * Direct usage of NodeSDK or WebTracerProvider is prohibited.
9
- *
10
- * ## Usage
11
- *
12
- * ### Node.js Services
13
- *
14
- * ```typescript
15
- * import { initNodeTelemetry } from '@superblocksteam/telemetry/node';
16
- * import { getDefaultPolicy, DeploymentType } from '@superblocksteam/shared';
17
- *
18
- * const policy = getDefaultPolicy(DeploymentType.CLOUD_PREM);
19
- * const telemetry = initNodeTelemetry({
20
- * serviceName: 'my-service',
21
- * serviceVersion: '1.0.0',
22
- * environment: 'production',
23
- * otlpUrl: 'http://localhost:4318',
24
- * }, policy);
25
- * ```
26
- *
27
- * ### Browser
28
- *
29
- * ```typescript
30
- * import { initBrowserTelemetry } from '@superblocksteam/telemetry/browser';
31
- * ```
32
- *
33
- * ### Testing
34
- *
35
- * ```typescript
36
- * import { initTestTelemetry } from '@superblocksteam/telemetry/testing';
37
- * ```
38
- */
39
- // Re-export types
40
- export * from "./types/index.js";
41
- // Re-export common utilities
42
- export * from "./common/index.js";
43
- // Re-export npm-registry telemetry (sanitization, metrics emitter, spans)
44
- export * from "./npm-registry/index.js";
45
- // Re-export LLMObs tiered telemetry
46
- export * from "./llmobs/index.js";
47
- // Re-export Node.js telemetry functions for convenience
48
- // This allows imports like: import { initNodeTelemetry } from '@superblocksteam/telemetry'
49
- export { REDACTED_PLACEHOLDER } from "./common/index.js";
50
- export { createSafeLogger, getLoggingPolicy, getMinimumPinoLevelForDeployment, getMinimumPinoLevelFromLoggingPolicy, parseLogExportMode, getTelemetryInstance, initNodeTelemetry, isLocalObsMode, isTelemetryInitialized, LogExportMode, redactForbiddenFields, resetTelemetry, MetricsClient, TracedSocket, } from "./node/index.js";
51
- // Note: Browser and Testing modules are still exported via package.json subpath exports
52
- // Import them as:
53
- // - @superblocksteam/telemetry/browser
54
- // - @superblocksteam/telemetry/testing
55
- // - @superblocksteam/telemetry/llmobs
56
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,kBAAkB;AAClB,cAAc,kBAAkB,CAAC;AAEjC,6BAA6B;AAC7B,cAAc,mBAAmB,CAAC;AAElC,0EAA0E;AAC1E,cAAc,yBAAyB,CAAC;AAExC,oCAAoC;AACpC,cAAc,mBAAmB,CAAC;AAElC,wDAAwD;AACxD,2FAA2F;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gCAAgC,EAChC,oCAAoC,EACpC,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,cAAc,EAId,aAAa,EAOb,YAAY,GAGb,MAAM,iBAAiB,CAAC;AAEzB,wFAAwF;AACxF,kBAAkB;AAClB,yCAAyC;AACzC,yCAAyC;AACzC,wCAAwC"}
@@ -1,149 +0,0 @@
1
- /**
2
- * ESLint Rule: No Forbidden Telemetry Attributes
3
- *
4
- * This rule detects usage of forbidden attributes in span/metric instrumentation.
5
- * It catches common leak paths before code is merged.
6
- *
7
- * Usage in eslint.config.js:
8
- * ```
9
- * import { noForbiddenTelemetryAttributes } from '@superblocksteam/telemetry/lint';
10
- *
11
- * export default [
12
- * {
13
- * plugins: {
14
- * telemetry: { rules: { 'no-forbidden-attributes': noForbiddenTelemetryAttributes } }
15
- * },
16
- * rules: {
17
- * 'telemetry/no-forbidden-attributes': 'error'
18
- * }
19
- * }
20
- * ];
21
- * ```
22
- */
23
- /**
24
- * Forbidden attribute patterns for static analysis.
25
- */
26
- export declare const FORBIDDEN_ATTRIBUTE_PATTERNS: string[];
27
- /**
28
- * ESLint rule metadata.
29
- */
30
- export declare const noForbiddenTelemetryAttributesMeta: {
31
- type: string;
32
- docs: {
33
- description: string;
34
- category: string;
35
- recommended: boolean;
36
- };
37
- messages: {
38
- forbiddenAttribute: string;
39
- resourceOnlyAttribute: string;
40
- };
41
- schema: never[];
42
- };
43
- /**
44
- * ESLint rule implementation.
45
- *
46
- * Detects patterns like:
47
- * - span.setAttribute('prompt', value)
48
- * - span.setAttributes({ prompt: value })
49
- * - { 'prompt': value }
50
- */
51
- export declare function noForbiddenTelemetryAttributesCreate(context: any): {
52
- CallExpression(node: any): void;
53
- Property(node: any): void;
54
- };
55
- /**
56
- * Complete ESLint rule export.
57
- */
58
- export declare const noForbiddenTelemetryAttributes: {
59
- meta: {
60
- type: string;
61
- docs: {
62
- description: string;
63
- category: string;
64
- recommended: boolean;
65
- };
66
- messages: {
67
- forbiddenAttribute: string;
68
- resourceOnlyAttribute: string;
69
- };
70
- schema: never[];
71
- };
72
- create: typeof noForbiddenTelemetryAttributesCreate;
73
- };
74
- /**
75
- * ESLint rule: No Direct OTEL SDK Usage
76
- *
77
- * Detects direct usage of NodeSDK or WebTracerProvider outside the telemetry package.
78
- */
79
- export declare const noDirectOtelSdkMeta: {
80
- type: string;
81
- docs: {
82
- description: string;
83
- category: string;
84
- recommended: boolean;
85
- };
86
- messages: {
87
- directSdkUsage: string;
88
- };
89
- schema: never[];
90
- };
91
- export declare function noDirectOtelSdkCreate(context: any): {
92
- ImportSpecifier?: undefined;
93
- CallExpression?: undefined;
94
- } | {
95
- ImportSpecifier(node: any): void;
96
- CallExpression(node: any): void;
97
- };
98
- export declare const noDirectOtelSdk: {
99
- meta: {
100
- type: string;
101
- docs: {
102
- description: string;
103
- category: string;
104
- recommended: boolean;
105
- };
106
- messages: {
107
- directSdkUsage: string;
108
- };
109
- schema: never[];
110
- };
111
- create: typeof noDirectOtelSdkCreate;
112
- };
113
- /**
114
- * All telemetry ESLint rules.
115
- */
116
- export declare const telemetryRules: {
117
- "no-forbidden-attributes": {
118
- meta: {
119
- type: string;
120
- docs: {
121
- description: string;
122
- category: string;
123
- recommended: boolean;
124
- };
125
- messages: {
126
- forbiddenAttribute: string;
127
- resourceOnlyAttribute: string;
128
- };
129
- schema: never[];
130
- };
131
- create: typeof noForbiddenTelemetryAttributesCreate;
132
- };
133
- "no-direct-otel-sdk": {
134
- meta: {
135
- type: string;
136
- docs: {
137
- description: string;
138
- category: string;
139
- recommended: boolean;
140
- };
141
- messages: {
142
- directSdkUsage: string;
143
- };
144
- schema: never[];
145
- };
146
- create: typeof noDirectOtelSdkCreate;
147
- };
148
- };
149
- //# sourceMappingURL=forbidden-attributes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"forbidden-attributes.d.ts","sourceRoot":"","sources":["../../src/lint/forbidden-attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH;;GAEG;AACH,eAAO,MAAM,4BAA4B,UAKxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;CAgB9C,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,GAAG;yBAsBxC,GAAG;mBAgCT,GAAG;EAuBrB;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;CAG1C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;CAc/B,CAAC;AAYF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,GAAG;;;;0BASxB,GAAG;yBAYJ,GAAG;EAsB3B;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;CAG3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG1B,CAAC"}