@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,656 @@
1
+ "use strict";
2
+ /**
3
+ * Tier 2 LLMObs Summarizer
4
+ *
5
+ * Extracts operational metrics from LLMObs spans for Tier 2 export.
6
+ * CRITICAL: This emits metrics WITHOUT any sensitive content.
7
+ *
8
+ * Tier 2 metrics include:
9
+ * - LLM latency by provider/model
10
+ * - Token usage (input, output, cached, reasoning)
11
+ * - Success/failure rates by error category
12
+ * - Cost aggregates
13
+ *
14
+ * EXPLICITLY EXCLUDED:
15
+ * - Prompts, code, tool IO
16
+ * - File paths, stack traces
17
+ * - User identifiers
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.LLMObsTier2Summarizer = void 0;
21
+ /**
22
+ * LLMObs Tier 2 Summarizer.
23
+ *
24
+ * Processes Tier 1 LLMObs spans and emits Tier 2 metrics.
25
+ * CRITICAL: Ensures NO prompts, code, tool IO appear in metrics.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const summarizer = new LLMObsTier2Summarizer(metricsClient);
30
+ *
31
+ * // Process each LLMObs span
32
+ * for (const span of llmobsSpans) {
33
+ * summarizer.summarize(span);
34
+ * }
35
+ * ```
36
+ */
37
+ class LLMObsTier2Summarizer {
38
+ metricsClient;
39
+ pricing;
40
+ /**
41
+ * Create a Tier 2 summarizer.
42
+ *
43
+ * @param metricsClient - Client for emitting metrics
44
+ * @param customPricing - Optional custom pricing per model
45
+ */
46
+ constructor(metricsClient, customPricing) {
47
+ this.metricsClient = metricsClient;
48
+ this.pricing = customPricing ?? this.getDefaultPricing();
49
+ }
50
+ /**
51
+ * Process a Tier 1 LLMObs span and emit Tier 2 metrics.
52
+ *
53
+ * @param span - The span to summarize
54
+ */
55
+ summarize(span) {
56
+ const spanKind = span.attributes["llmobs.span_kind"];
57
+ switch (spanKind) {
58
+ case "llm":
59
+ this.summarizeLLMSpan(span);
60
+ break;
61
+ case "tool":
62
+ this.summarizeToolSpan(span);
63
+ break;
64
+ case "workflow":
65
+ case "task":
66
+ // Workflow/task summaries are derived from child spans
67
+ // No additional metrics needed at this level
68
+ break;
69
+ default:
70
+ // Check by span name patterns
71
+ if (this.isLLMSpan(span)) {
72
+ this.summarizeLLMSpan(span);
73
+ }
74
+ else if (this.isToolSpan(span)) {
75
+ this.summarizeToolSpan(span);
76
+ }
77
+ }
78
+ }
79
+ /**
80
+ * Extract a summary from an LLM span (for testing/debugging).
81
+ * Contains NO sensitive data.
82
+ *
83
+ * @param span - The span to extract from
84
+ * @returns Summary with safe metrics only
85
+ */
86
+ extractLLMSummary(span) {
87
+ const attrs = span.attributes;
88
+ // Extract provider and model from various attribute names with defensive coercion
89
+ const providerRaw = attrs["llmobs.model_provider"] ??
90
+ attrs["llm.provider"] ??
91
+ attrs["gen_ai.system"] ??
92
+ attrs["gen_ai.provider.name"];
93
+ const provider = this.normalizeProvider(providerRaw);
94
+ const providerOtel = this.normalizeProviderOtel(providerRaw);
95
+ const modelRaw = attrs["llmobs.model_name"] ??
96
+ attrs["llm.model"] ??
97
+ attrs["gen_ai.request.model"] ??
98
+ attrs["gen_ai.response.model"];
99
+ const model = this.normalizeModel(modelRaw);
100
+ // Extract response model if different from request model
101
+ const responseModelRaw = attrs["gen_ai.response.model"];
102
+ const responseModel = responseModelRaw
103
+ ? this.normalizeModel(responseModelRaw)
104
+ : undefined;
105
+ // Extract operation name (OTEL semantic convention)
106
+ const operationName = this.extractOperationName(span);
107
+ // Extract time to first token (streaming)
108
+ const timeToFirstTokenMs = this.extractTimeToFirstToken(attrs);
109
+ // Extract token counts from various attribute names, clamped to non-negative
110
+ const inputTokens = Math.max(0, attrs["llmobs.metrics.input_tokens"] ??
111
+ attrs["llmobs.metrics.inputTokens"] ??
112
+ attrs["llm.input_tokens"] ??
113
+ attrs["gen_ai.usage.input_tokens"] ??
114
+ 0);
115
+ const outputTokens = Math.max(0, attrs["llmobs.metrics.output_tokens"] ??
116
+ attrs["llmobs.metrics.outputTokens"] ??
117
+ attrs["llm.output_tokens"] ??
118
+ attrs["gen_ai.usage.output_tokens"] ??
119
+ 0);
120
+ const totalTokens = Math.max(0, attrs["llmobs.metrics.total_tokens"] ??
121
+ attrs["llmobs.metrics.totalTokens"] ??
122
+ attrs["llm.total_tokens"] ??
123
+ inputTokens + outputTokens);
124
+ const reasoningTokens = Math.max(0, attrs["llmobs.metrics.reasoning_tokens"] ??
125
+ attrs["llmobs.metrics.reasoningTokens"] ??
126
+ attrs["llm.reasoning_tokens"] ??
127
+ 0);
128
+ const cachedTokens = Math.max(0, attrs["llmobs.metrics.cache_read_tokens"] ??
129
+ attrs["llmobs.metrics.cacheReadTokens"] ??
130
+ attrs["llm.cached_tokens"] ??
131
+ 0);
132
+ // Extract status
133
+ const status = this.extractStatus(span);
134
+ const errorCategory = this.categorizeError(span);
135
+ const finishReason = this.extractFinishReason(span);
136
+ // Calculate duration
137
+ const durationMs = this.getDurationMs(span);
138
+ // Estimate cost
139
+ const estimatedCost = this.estimateCost(model, inputTokens, outputTokens);
140
+ return {
141
+ provider,
142
+ providerOtel,
143
+ model,
144
+ responseModel,
145
+ status,
146
+ durationMs,
147
+ inputTokens,
148
+ outputTokens,
149
+ totalTokens,
150
+ reasoningTokens,
151
+ cachedTokens,
152
+ errorCategory,
153
+ finishReason,
154
+ estimatedCost,
155
+ operationName,
156
+ timeToFirstTokenMs,
157
+ };
158
+ }
159
+ /**
160
+ * Extract a summary from a tool span.
161
+ *
162
+ * @param span - The span to extract from
163
+ * @returns Tool summary with safe metrics only
164
+ */
165
+ extractToolSummary(span) {
166
+ const attrs = span.attributes;
167
+ const toolName = this.normalizeToolName(attrs["tool.name"] ||
168
+ span.name.replace("tool.", "") ||
169
+ "unknown");
170
+ const status = attrs["llmobs.status"] === "error" ||
171
+ attrs["otel.status_code"] === 2 ||
172
+ attrs["error"] === true
173
+ ? "error"
174
+ : "success";
175
+ // Extract error category for tool failures (added in v0.2.0)
176
+ const errorCategory = status === "error"
177
+ ? this.categorizeToolError(span)
178
+ : "none";
179
+ return {
180
+ toolName,
181
+ status,
182
+ durationMs: this.getDurationMs(span),
183
+ errorCategory,
184
+ };
185
+ }
186
+ /**
187
+ * Emit LLM span metrics.
188
+ * Emits BOTH legacy (llm_*) and OTEL-aligned (gen_ai.*) metrics for migration.
189
+ */
190
+ summarizeLLMSpan(span) {
191
+ const summary = this.extractLLMSummary(span);
192
+ // === OTEL-ALIGNED METRICS (gen_ai.*) ===
193
+ // gen_ai.client.operation.duration (histogram with OTEL bucket boundaries)
194
+ const otelDurationLabels = {
195
+ "gen_ai.operation.name": summary.operationName,
196
+ "gen_ai.provider.name": summary.providerOtel,
197
+ "gen_ai.request.model": summary.model,
198
+ };
199
+ if (summary.responseModel) {
200
+ otelDurationLabels["gen_ai.response.model"] = summary.responseModel;
201
+ }
202
+ if (summary.status === "error" && summary.errorCategory !== "none") {
203
+ otelDurationLabels["error.type"] = summary.errorCategory;
204
+ }
205
+ this.metricsClient.recordHistogram("gen_ai.client.operation.duration", summary.durationMs / 1000, otelDurationLabels);
206
+ // gen_ai.client.token.usage (histogram for distribution insights)
207
+ const tokenBaseLabels = {
208
+ "gen_ai.operation.name": summary.operationName,
209
+ "gen_ai.provider.name": summary.providerOtel,
210
+ "gen_ai.request.model": summary.model,
211
+ };
212
+ if (summary.responseModel) {
213
+ tokenBaseLabels["gen_ai.response.model"] = summary.responseModel;
214
+ }
215
+ if (summary.inputTokens > 0) {
216
+ this.metricsClient.recordHistogram("gen_ai.client.token.usage", summary.inputTokens, { ...tokenBaseLabels, "gen_ai.token.type": "input" });
217
+ }
218
+ if (summary.outputTokens > 0) {
219
+ this.metricsClient.recordHistogram("gen_ai.client.token.usage", summary.outputTokens, { ...tokenBaseLabels, "gen_ai.token.type": "output" });
220
+ }
221
+ // gen_ai.client.time_to_first_token (streaming TTFT)
222
+ // Contract only allows operation names: chat, text_completion, generate_content
223
+ const ttftAllowedOperations = [
224
+ "chat",
225
+ "text_completion",
226
+ "generate_content",
227
+ ];
228
+ if (summary.timeToFirstTokenMs !== undefined &&
229
+ summary.timeToFirstTokenMs > 0 &&
230
+ ttftAllowedOperations.includes(summary.operationName)) {
231
+ this.metricsClient.recordHistogram("gen_ai.client.time_to_first_token", summary.timeToFirstTokenMs / 1000, {
232
+ "gen_ai.operation.name": summary.operationName,
233
+ "gen_ai.provider.name": summary.providerOtel,
234
+ "gen_ai.request.model": summary.model,
235
+ });
236
+ }
237
+ // NOTE: Legacy llm_* metrics have been removed.
238
+ // Billing data flows through CloudEvents → Snowflake, not metrics.
239
+ // See: engineering/projects/o11y-refactor/billing-proposal.md
240
+ }
241
+ /**
242
+ * Emit tool span metrics.
243
+ * Uses OTEL-aligned naming with gen_ai.operation.name = "execute_tool".
244
+ */
245
+ summarizeToolSpan(span) {
246
+ const summary = this.extractToolSummary(span);
247
+ // gen_ai.client.operation.duration for tool executions
248
+ const durationLabels = {
249
+ "gen_ai.operation.name": "execute_tool",
250
+ "gen_ai.tool.name": summary.toolName,
251
+ };
252
+ if (summary.status === "error" && summary.errorCategory !== "none") {
253
+ durationLabels["error.type"] = summary.errorCategory;
254
+ }
255
+ this.metricsClient.recordHistogram("gen_ai.client.operation.duration", summary.durationMs / 1000, durationLabels);
256
+ }
257
+ /**
258
+ * Check if span is an LLM span by name pattern.
259
+ */
260
+ isLLMSpan(span) {
261
+ return (span.name.startsWith("llm.") ||
262
+ span.name.startsWith("ai.streamText") ||
263
+ span.name.includes(".llm") ||
264
+ !!span.attributes["llm.model"] ||
265
+ !!span.attributes["gen_ai.request.model"]);
266
+ }
267
+ /**
268
+ * Check if span is a tool span by name pattern.
269
+ */
270
+ isToolSpan(span) {
271
+ return (span.name.startsWith("tool.") ||
272
+ span.attributes["llmobs.span_kind"] === "tool");
273
+ }
274
+ /**
275
+ * Extract span status.
276
+ */
277
+ extractStatus(span) {
278
+ const attrs = span.attributes;
279
+ if (attrs["llmobs.status"] === "error" ||
280
+ attrs["otel.status_code"] === 2 ||
281
+ attrs["error"] === true) {
282
+ return "error";
283
+ }
284
+ return "success";
285
+ }
286
+ /**
287
+ * Categorize error from span attributes.
288
+ * CRITICAL: Does NOT expose error messages or stack traces.
289
+ */
290
+ categorizeError(span) {
291
+ if (this.extractStatus(span) !== "error") {
292
+ return "none";
293
+ }
294
+ const attrs = span.attributes;
295
+ // Check for explicit error category
296
+ const explicitCategory = attrs["llm.error_category"];
297
+ if (explicitCategory && this.isValidErrorCategory(explicitCategory)) {
298
+ return explicitCategory;
299
+ }
300
+ // Check metadata for error category (from llmobs observer)
301
+ const metadata = attrs["llmobs.metadata"];
302
+ if (metadata) {
303
+ try {
304
+ const parsed = JSON.parse(metadata);
305
+ if (parsed.errorCategory &&
306
+ this.isValidErrorCategory(parsed.errorCategory)) {
307
+ return parsed.errorCategory;
308
+ }
309
+ }
310
+ catch {
311
+ // Ignore parse errors
312
+ }
313
+ }
314
+ // Infer from tags (safe - checking boolean flags with strict comparison)
315
+ const tags = attrs["llmobs.tags"];
316
+ if (tags) {
317
+ try {
318
+ const parsed = JSON.parse(tags);
319
+ // Use strict === true to avoid truthy coercion of arbitrary values
320
+ if (parsed.wasAborted === true)
321
+ return "aborted";
322
+ if (parsed.errorCategory &&
323
+ this.isValidErrorCategory(parsed.errorCategory)) {
324
+ return parsed.errorCategory;
325
+ }
326
+ }
327
+ catch {
328
+ // Ignore parse errors
329
+ }
330
+ }
331
+ return "unknown";
332
+ }
333
+ /**
334
+ * Extract finish reason.
335
+ * Handles gen_ai.response.finish_reasons as array per OTEL semantic conventions.
336
+ */
337
+ extractFinishReason(span) {
338
+ const attrs = span.attributes;
339
+ // Try single-value attribute first
340
+ const singleReason = attrs["llm.finish_reason"];
341
+ if (typeof singleReason === "string" &&
342
+ this.isValidFinishReason(singleReason)) {
343
+ return singleReason;
344
+ }
345
+ // Handle finish_reasons as array (OTEL semantic conventions uses plural/array)
346
+ const reasons = attrs["gen_ai.response.finish_reasons"];
347
+ if (Array.isArray(reasons) && reasons.length > 0) {
348
+ const firstReason = String(reasons[0]);
349
+ if (this.isValidFinishReason(firstReason)) {
350
+ return firstReason;
351
+ }
352
+ }
353
+ else if (typeof reasons === "string" &&
354
+ this.isValidFinishReason(reasons)) {
355
+ return reasons;
356
+ }
357
+ return undefined;
358
+ }
359
+ /**
360
+ * Normalize provider name to allowed values.
361
+ * Defensive: handles non-string inputs gracefully.
362
+ */
363
+ normalizeProvider(provider) {
364
+ // Defensive string coercion - handles objects with toString()
365
+ if (provider == null)
366
+ return "openai";
367
+ const providerStr = typeof provider === "string" ? provider : String(provider);
368
+ const normalized = providerStr.toLowerCase();
369
+ const mapping = {
370
+ openai: "openai",
371
+ anthropic: "anthropic",
372
+ claude: "anthropic",
373
+ azure: "azure",
374
+ azure_openai: "azure",
375
+ bedrock: "bedrock",
376
+ aws_bedrock: "bedrock",
377
+ google: "google",
378
+ gemini: "google",
379
+ cohere: "cohere",
380
+ mistral: "mistral",
381
+ };
382
+ return mapping[normalized] ?? "openai"; // Default to openai for unknown
383
+ }
384
+ /**
385
+ * Normalize provider to OTEL canonical names.
386
+ * Maps legacy names to OTEL gen_ai.provider.name values.
387
+ * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-metrics/
388
+ */
389
+ normalizeProviderOtel(provider) {
390
+ if (provider == null)
391
+ return "openai";
392
+ const providerStr = typeof provider === "string" ? provider : String(provider);
393
+ const normalized = providerStr.toLowerCase();
394
+ const mapping = {
395
+ openai: "openai",
396
+ anthropic: "anthropic",
397
+ claude: "anthropic",
398
+ azure: "azure.ai.openai",
399
+ azure_openai: "azure.ai.openai",
400
+ "azure.ai.openai": "azure.ai.openai",
401
+ "azure.ai.inference": "azure.ai.inference",
402
+ bedrock: "aws.bedrock",
403
+ aws_bedrock: "aws.bedrock",
404
+ "aws.bedrock": "aws.bedrock",
405
+ google: "gcp.vertex_ai",
406
+ gemini: "gcp.gemini",
407
+ vertex: "gcp.vertex_ai",
408
+ "gcp.gemini": "gcp.gemini",
409
+ "gcp.vertex_ai": "gcp.vertex_ai",
410
+ cohere: "cohere",
411
+ mistral: "mistral_ai",
412
+ mistral_ai: "mistral_ai",
413
+ deepseek: "deepseek",
414
+ groq: "groq",
415
+ };
416
+ return mapping[normalized] ?? "openai";
417
+ }
418
+ /**
419
+ * Extract operation name from span attributes.
420
+ * Maps span kind and attributes to OTEL gen_ai.operation.name values.
421
+ */
422
+ extractOperationName(span) {
423
+ const attrs = span.attributes;
424
+ // Check for explicit operation name
425
+ const explicit = attrs["gen_ai.operation.name"];
426
+ if (explicit && this.isValidOperationName(explicit)) {
427
+ return explicit;
428
+ }
429
+ // Infer from span kind
430
+ const spanKind = attrs["llmobs.span_kind"];
431
+ if (spanKind === "tool")
432
+ return "execute_tool";
433
+ if (spanKind === "workflow" || spanKind === "agent")
434
+ return "invoke_agent";
435
+ if (spanKind === "embedding")
436
+ return "embeddings";
437
+ // Infer from span name
438
+ const spanName = span.name.toLowerCase();
439
+ if (spanName.includes("embed"))
440
+ return "embeddings";
441
+ if (spanName.includes("agent") || spanName.includes("clark"))
442
+ return "invoke_agent";
443
+ if (spanName.includes("tool"))
444
+ return "execute_tool";
445
+ if (spanName.includes("complete") && !spanName.includes("chat"))
446
+ return "text_completion";
447
+ // Default to chat (most common)
448
+ return "chat";
449
+ }
450
+ /**
451
+ * Extract time to first token from span attributes.
452
+ * Checks multiple attribute names for compatibility.
453
+ * Returns value in MILLISECONDS for consistent internal handling.
454
+ *
455
+ * IMPORTANT: Different attributes use different units:
456
+ * - gen_ai.client.time_to_first_token: SECONDS (OTEL spec)
457
+ * - llm.time_to_first_token_ms: MILLISECONDS
458
+ * - llmobs.metrics.time_to_first_token_ms: MILLISECONDS
459
+ * - timeToFirstTokenMs: MILLISECONDS
460
+ */
461
+ extractTimeToFirstToken(attrs) {
462
+ // Check OTEL attribute first (in SECONDS) - convert to milliseconds
463
+ const ttftSeconds = attrs["gen_ai.client.time_to_first_token"];
464
+ if (typeof ttftSeconds === "number" && ttftSeconds > 0) {
465
+ return ttftSeconds * 1000; // Convert seconds to milliseconds
466
+ }
467
+ // Check millisecond-based attributes
468
+ const ttftMs = attrs["llm.time_to_first_token_ms"] ??
469
+ attrs["llmobs.metrics.time_to_first_token_ms"] ??
470
+ attrs["timeToFirstTokenMs"];
471
+ if (typeof ttftMs === "number" && ttftMs > 0) {
472
+ return ttftMs; // Already in milliseconds
473
+ }
474
+ return undefined;
475
+ }
476
+ /**
477
+ * Categorize tool errors.
478
+ * CRITICAL: Does NOT expose error messages or stack traces.
479
+ */
480
+ categorizeToolError(span) {
481
+ const attrs = span.attributes;
482
+ // Check for explicit error category
483
+ const explicit = attrs["tool.error_category"];
484
+ if (explicit && this.isValidToolErrorCategory(explicit)) {
485
+ return explicit;
486
+ }
487
+ // Check metadata
488
+ const metadata = attrs["llmobs.metadata"];
489
+ if (metadata) {
490
+ try {
491
+ const parsed = JSON.parse(metadata);
492
+ if (parsed.toolErrorCategory &&
493
+ this.isValidToolErrorCategory(parsed.toolErrorCategory)) {
494
+ return parsed.toolErrorCategory;
495
+ }
496
+ }
497
+ catch {
498
+ // Ignore parse errors
499
+ }
500
+ }
501
+ // Infer from error type patterns (safe - checking enum values only)
502
+ const errorType = attrs["error.type"];
503
+ if (errorType) {
504
+ const normalized = errorType.toLowerCase();
505
+ if (normalized.includes("timeout"))
506
+ return "timeout";
507
+ if (normalized.includes("permission") || normalized.includes("auth"))
508
+ return "permission_denied";
509
+ if (normalized.includes("not_found") || normalized.includes("notfound"))
510
+ return "not_found";
511
+ if (normalized.includes("validation") || normalized.includes("invalid"))
512
+ return "validation_error";
513
+ }
514
+ return "execution_error"; // Default for tool errors
515
+ }
516
+ /**
517
+ * Validate operation name is in the allowed enum.
518
+ */
519
+ isValidOperationName(name) {
520
+ const valid = [
521
+ "chat",
522
+ "text_completion",
523
+ "embeddings",
524
+ "execute_tool",
525
+ "invoke_agent",
526
+ "generate_content",
527
+ ];
528
+ return valid.includes(name);
529
+ }
530
+ /**
531
+ * Validate tool error category is in the allowed enum.
532
+ */
533
+ isValidToolErrorCategory(category) {
534
+ const valid = [
535
+ "none",
536
+ "timeout",
537
+ "execution_error",
538
+ "validation_error",
539
+ "permission_denied",
540
+ "not_found",
541
+ "unknown",
542
+ ];
543
+ return valid.includes(category);
544
+ }
545
+ /**
546
+ * Normalize model name with strict sanitization.
547
+ * SECURITY: Only allows alphanumeric, dots, hyphens to prevent data injection.
548
+ * Attacker-controlled model names could otherwise leak sensitive data to Tier 2.
549
+ */
550
+ normalizeModel(model) {
551
+ // Defensive string coercion - handles objects with toString()
552
+ if (model == null)
553
+ return "unknown";
554
+ const modelStr = typeof model === "string" ? model : String(model);
555
+ // Strict allowlist: alphanumeric, dots, hyphens only
556
+ const sanitized = modelStr
557
+ .toLowerCase()
558
+ .replace(/[^a-z0-9.-]/g, "")
559
+ .slice(0, 64);
560
+ // Remove date version suffixes for cardinality control
561
+ return (sanitized.replace(/[-_]?\d{4}[-_]?\d{2}[-_]?\d{2}$/, "") || "unknown");
562
+ }
563
+ /**
564
+ * Normalize tool name with strict sanitization.
565
+ * SECURITY: Only allows alphanumeric, underscores, hyphens to prevent data injection.
566
+ * Attacker-controlled tool names could otherwise leak sensitive data to Tier 2.
567
+ */
568
+ normalizeToolName(toolName) {
569
+ // Defensive string coercion - handles objects with toString()
570
+ if (toolName == null)
571
+ return "unknown";
572
+ const toolStr = typeof toolName === "string" ? toolName : String(toolName);
573
+ return (toolStr
574
+ .toLowerCase()
575
+ .replace(/[^a-z0-9_-]/g, "_")
576
+ .replace(/_+/g, "_") // Collapse multiple underscores
577
+ .replace(/^_|_$/g, "") // Trim leading/trailing
578
+ .slice(0, 50) || "unknown");
579
+ }
580
+ /**
581
+ * Get span duration in milliseconds, clamped to non-negative.
582
+ * Handles clock skew or corrupted data gracefully.
583
+ */
584
+ getDurationMs(span) {
585
+ const [startSecs, startNanos] = span.startTime;
586
+ const [endSecs, endNanos] = span.endTime;
587
+ const durationMs = (endSecs - startSecs) * 1000 + (endNanos - startNanos) / 1e6;
588
+ return Math.max(0, durationMs);
589
+ }
590
+ /**
591
+ * Validate error category is in the allowed enum.
592
+ */
593
+ isValidErrorCategory(category) {
594
+ const valid = [
595
+ "none",
596
+ "rate_limit",
597
+ "context_length",
598
+ "content_filter",
599
+ "quota",
600
+ "network",
601
+ "timeout",
602
+ "auth_error",
603
+ "api_error",
604
+ "validation_error",
605
+ "aborted",
606
+ "unknown",
607
+ ];
608
+ return valid.includes(category);
609
+ }
610
+ /**
611
+ * Validate finish reason is in the allowed enum.
612
+ */
613
+ isValidFinishReason(reason) {
614
+ const valid = [
615
+ "stop",
616
+ "length",
617
+ "content_filter",
618
+ "tool_calls",
619
+ "error",
620
+ ];
621
+ return valid.includes(reason);
622
+ }
623
+ /**
624
+ * Estimate cost based on model and token counts.
625
+ * Uses rough estimates - actual costs should be calculated server-side.
626
+ */
627
+ estimateCost(model, inputTokens, outputTokens) {
628
+ const pricing = this.pricing.get(model) || this.pricing.get("default");
629
+ if (!pricing)
630
+ return 0;
631
+ return inputTokens * pricing.input + outputTokens * pricing.output;
632
+ }
633
+ /**
634
+ * Get default pricing per 1000 tokens (in USD).
635
+ */
636
+ getDefaultPricing() {
637
+ return new Map([
638
+ // OpenAI
639
+ ["gpt-4", { input: 0.00003, output: 0.00006 }],
640
+ ["gpt-4-turbo", { input: 0.00001, output: 0.00003 }],
641
+ ["gpt-4o", { input: 0.000005, output: 0.000015 }],
642
+ ["gpt-4o-mini", { input: 0.00000015, output: 0.0000006 }],
643
+ ["gpt-3.5-turbo", { input: 0.0000005, output: 0.0000015 }],
644
+ // Anthropic
645
+ ["claude-3-opus", { input: 0.000015, output: 0.000075 }],
646
+ ["claude-3-sonnet", { input: 0.000003, output: 0.000015 }],
647
+ ["claude-3-haiku", { input: 0.00000025, output: 0.00000125 }],
648
+ ["claude-3.5-sonnet", { input: 0.000003, output: 0.000015 }],
649
+ ["claude-sonnet", { input: 0.000003, output: 0.000015 }],
650
+ // Default fallback
651
+ ["default", { input: 0.000001, output: 0.000003 }],
652
+ ]);
653
+ }
654
+ }
655
+ exports.LLMObsTier2Summarizer = LLMObsTier2Summarizer;
656
+ //# sourceMappingURL=tier2-summarizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tier2-summarizer.js","sourceRoot":"","sources":["../../src/llmobs/tier2-summarizer.ts"],"names":[],"mappings":"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"}