@newrelic/preflight 0.0.1-pre.1 → 1.0.1

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 (578) hide show
  1. package/LICENSE +183 -0
  2. package/README.md +498 -0
  3. package/dist/alerts/alert-log.d.ts +24 -0
  4. package/dist/alerts/alert-log.d.ts.map +1 -0
  5. package/dist/alerts/alert-log.js +159 -0
  6. package/dist/alerts/alert-log.js.map +1 -0
  7. package/dist/alerts/alert-snapshot-collector.d.ts +168 -0
  8. package/dist/alerts/alert-snapshot-collector.d.ts.map +1 -0
  9. package/dist/alerts/alert-snapshot-collector.js +243 -0
  10. package/dist/alerts/alert-snapshot-collector.js.map +1 -0
  11. package/dist/alerts/local-alert-engine.d.ts +86 -0
  12. package/dist/alerts/local-alert-engine.d.ts.map +1 -0
  13. package/dist/alerts/local-alert-engine.js +466 -0
  14. package/dist/alerts/local-alert-engine.js.map +1 -0
  15. package/dist/alerts/local-alert-rule.d.ts +439 -0
  16. package/dist/alerts/local-alert-rule.d.ts.map +1 -0
  17. package/dist/alerts/local-alert-rule.js +139 -0
  18. package/dist/alerts/local-alert-rule.js.map +1 -0
  19. package/dist/alerts/os-notifier.d.ts +39 -0
  20. package/dist/alerts/os-notifier.d.ts.map +1 -0
  21. package/dist/alerts/os-notifier.js +170 -0
  22. package/dist/alerts/os-notifier.js.map +1 -0
  23. package/dist/alerts/types.d.ts +35 -0
  24. package/dist/alerts/types.d.ts.map +1 -0
  25. package/dist/alerts/types.js +8 -0
  26. package/dist/alerts/types.js.map +1 -0
  27. package/dist/config.d.ts +169 -0
  28. package/dist/config.d.ts.map +1 -0
  29. package/dist/config.js +868 -0
  30. package/dist/config.js.map +1 -0
  31. package/dist/dashboard/dashboard-server.d.ts +38 -0
  32. package/dist/dashboard/dashboard-server.d.ts.map +1 -0
  33. package/dist/dashboard/dashboard-server.js +207 -0
  34. package/dist/dashboard/dashboard-server.js.map +1 -0
  35. package/dist/dashboard/index.d.ts +3 -0
  36. package/dist/dashboard/index.d.ts.map +1 -0
  37. package/dist/dashboard/index.js +2 -0
  38. package/dist/dashboard/index.js.map +1 -0
  39. package/dist/dashboard/live-event-bus.d.ts +99 -0
  40. package/dist/dashboard/live-event-bus.d.ts.map +1 -0
  41. package/dist/dashboard/live-event-bus.js +56 -0
  42. package/dist/dashboard/live-event-bus.js.map +1 -0
  43. package/dist/dashboard/routes/api-handler.d.ts +122 -0
  44. package/dist/dashboard/routes/api-handler.d.ts.map +1 -0
  45. package/dist/dashboard/routes/api-handler.js +1414 -0
  46. package/dist/dashboard/routes/api-handler.js.map +1 -0
  47. package/dist/dashboard/routes/replay-analyzer.d.ts +15 -0
  48. package/dist/dashboard/routes/replay-analyzer.d.ts.map +1 -0
  49. package/dist/dashboard/routes/replay-analyzer.js +227 -0
  50. package/dist/dashboard/routes/replay-analyzer.js.map +1 -0
  51. package/dist/dashboard/routes/sse-handler.d.ts +4 -0
  52. package/dist/dashboard/routes/sse-handler.d.ts.map +1 -0
  53. package/dist/dashboard/routes/sse-handler.js +122 -0
  54. package/dist/dashboard/routes/sse-handler.js.map +1 -0
  55. package/dist/dashboard/routes/static-handler.d.ts +3 -0
  56. package/dist/dashboard/routes/static-handler.d.ts.map +1 -0
  57. package/dist/dashboard/routes/static-handler.js +123 -0
  58. package/dist/dashboard/routes/static-handler.js.map +1 -0
  59. package/dist/data/alerts/conditions/01-daily-cost-spike.json +16 -0
  60. package/dist/data/alerts/conditions/02-low-efficiency-score.json +16 -0
  61. package/dist/data/alerts/conditions/03-stuck-loop-rate.json +16 -0
  62. package/dist/data/alerts/conditions/04-anti-pattern-rate.json +16 -0
  63. package/dist/data/alerts/conditions/05-session-cost-budget.json +16 -0
  64. package/dist/data/alerts/conditions-personal/01-personal-daily-cost.json +16 -0
  65. package/dist/data/alerts/conditions-personal/02-personal-session-cost.json +16 -0
  66. package/dist/data/alerts/conditions-personal/03-personal-low-efficiency.json +16 -0
  67. package/dist/data/alerts/conditions-personal/04-personal-anti-pattern-rate.json +16 -0
  68. package/dist/data/alerts/conditions-personal/05-personal-stuck-loop.json +16 -0
  69. package/dist/data/alerts/policy.json +4 -0
  70. package/dist/data/dashboards/ai-coding-assistant-manager-view.json +103 -0
  71. package/dist/data/dashboards/ai-coding-assistant-overview.json +239 -0
  72. package/dist/data/dashboards/ai-coding-assistant-personal.json +442 -0
  73. package/dist/data/dashboards/ai-coding-assistant-platform-comparison.json +320 -0
  74. package/dist/data/dashboards/ai-coding-assistant-security.json +275 -0
  75. package/dist/data/dashboards/ai-coding-assistant-session-detail.json +296 -0
  76. package/dist/data/dashboards/ai-coding-assistant-team-view.json +345 -0
  77. package/dist/deploy/data-paths.d.ts +22 -0
  78. package/dist/deploy/data-paths.d.ts.map +1 -0
  79. package/dist/deploy/data-paths.js +69 -0
  80. package/dist/deploy/data-paths.js.map +1 -0
  81. package/dist/deploy/deploy-alerts.d.ts +58 -0
  82. package/dist/deploy/deploy-alerts.d.ts.map +1 -0
  83. package/dist/deploy/deploy-alerts.js +371 -0
  84. package/dist/deploy/deploy-alerts.js.map +1 -0
  85. package/dist/deploy/deploy-dashboards.d.ts +92 -0
  86. package/dist/deploy/deploy-dashboards.d.ts.map +1 -0
  87. package/dist/deploy/deploy-dashboards.js +282 -0
  88. package/dist/deploy/deploy-dashboards.js.map +1 -0
  89. package/dist/digest/digest-formatter.d.ts +3 -0
  90. package/dist/digest/digest-formatter.d.ts.map +1 -0
  91. package/dist/digest/digest-formatter.js +37 -0
  92. package/dist/digest/digest-formatter.js.map +1 -0
  93. package/dist/digest/digest-sender.d.ts +2 -0
  94. package/dist/digest/digest-sender.d.ts.map +1 -0
  95. package/dist/digest/digest-sender.js +29 -0
  96. package/dist/digest/digest-sender.js.map +1 -0
  97. package/dist/hooks/bash-classifier.d.ts +26 -0
  98. package/dist/hooks/bash-classifier.d.ts.map +1 -0
  99. package/dist/hooks/bash-classifier.js +409 -0
  100. package/dist/hooks/bash-classifier.js.map +1 -0
  101. package/dist/hooks/collector-script.d.ts +47 -0
  102. package/dist/hooks/collector-script.d.ts.map +1 -0
  103. package/dist/hooks/collector-script.js +662 -0
  104. package/dist/hooks/collector-script.js.map +1 -0
  105. package/dist/hooks/event-processor.d.ts +65 -0
  106. package/dist/hooks/event-processor.d.ts.map +1 -0
  107. package/dist/hooks/event-processor.js +342 -0
  108. package/dist/hooks/event-processor.js.map +1 -0
  109. package/dist/hooks/index.d.ts +7 -0
  110. package/dist/hooks/index.d.ts.map +1 -0
  111. package/dist/hooks/index.js +5 -0
  112. package/dist/hooks/index.js.map +1 -0
  113. package/dist/hooks/session-resolver.d.ts +66 -0
  114. package/dist/hooks/session-resolver.d.ts.map +1 -0
  115. package/dist/hooks/session-resolver.js +196 -0
  116. package/dist/hooks/session-resolver.js.map +1 -0
  117. package/dist/hooks/tool-parsers.d.ts +19 -0
  118. package/dist/hooks/tool-parsers.d.ts.map +1 -0
  119. package/dist/hooks/tool-parsers.js +260 -0
  120. package/dist/hooks/tool-parsers.js.map +1 -0
  121. package/dist/index.d.ts +107 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +1505 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/install/cli.d.ts +11 -0
  126. package/dist/install/cli.d.ts.map +1 -0
  127. package/dist/install/cli.js +365 -0
  128. package/dist/install/cli.js.map +1 -0
  129. package/dist/install/index.d.ts +4 -0
  130. package/dist/install/index.d.ts.map +1 -0
  131. package/dist/install/index.js +3 -0
  132. package/dist/install/index.js.map +1 -0
  133. package/dist/install/install-helper.d.ts +35 -0
  134. package/dist/install/install-helper.d.ts.map +1 -0
  135. package/dist/install/install-helper.js +227 -0
  136. package/dist/install/install-helper.js.map +1 -0
  137. package/dist/install/key-validator.d.ts +19 -0
  138. package/dist/install/key-validator.d.ts.map +1 -0
  139. package/dist/install/key-validator.js +122 -0
  140. package/dist/install/key-validator.js.map +1 -0
  141. package/dist/install/migrate.d.ts +12 -0
  142. package/dist/install/migrate.d.ts.map +1 -0
  143. package/dist/install/migrate.js +115 -0
  144. package/dist/install/migrate.js.map +1 -0
  145. package/dist/install/schedule.d.ts +11 -0
  146. package/dist/install/schedule.d.ts.map +1 -0
  147. package/dist/install/schedule.js +114 -0
  148. package/dist/install/schedule.js.map +1 -0
  149. package/dist/install/setup-wizard.d.ts +40 -0
  150. package/dist/install/setup-wizard.d.ts.map +1 -0
  151. package/dist/install/setup-wizard.js +489 -0
  152. package/dist/install/setup-wizard.js.map +1 -0
  153. package/dist/lib/date.d.ts +54 -0
  154. package/dist/lib/date.d.ts.map +1 -0
  155. package/dist/lib/date.js +85 -0
  156. package/dist/lib/date.js.map +1 -0
  157. package/dist/metrics/anti-patterns.d.ts +62 -0
  158. package/dist/metrics/anti-patterns.d.ts.map +1 -0
  159. package/dist/metrics/anti-patterns.js +301 -0
  160. package/dist/metrics/anti-patterns.js.map +1 -0
  161. package/dist/metrics/api-failure-tracker.d.ts +82 -0
  162. package/dist/metrics/api-failure-tracker.d.ts.map +1 -0
  163. package/dist/metrics/api-failure-tracker.js +202 -0
  164. package/dist/metrics/api-failure-tracker.js.map +1 -0
  165. package/dist/metrics/budget-tracker.d.ts +60 -0
  166. package/dist/metrics/budget-tracker.d.ts.map +1 -0
  167. package/dist/metrics/budget-tracker.js +130 -0
  168. package/dist/metrics/budget-tracker.js.map +1 -0
  169. package/dist/metrics/claudemd-tracker.d.ts +108 -0
  170. package/dist/metrics/claudemd-tracker.d.ts.map +1 -0
  171. package/dist/metrics/claudemd-tracker.js +337 -0
  172. package/dist/metrics/claudemd-tracker.js.map +1 -0
  173. package/dist/metrics/collaboration-profile.d.ts +65 -0
  174. package/dist/metrics/collaboration-profile.d.ts.map +1 -0
  175. package/dist/metrics/collaboration-profile.js +231 -0
  176. package/dist/metrics/collaboration-profile.js.map +1 -0
  177. package/dist/metrics/context-composition-tracker.d.ts +74 -0
  178. package/dist/metrics/context-composition-tracker.d.ts.map +1 -0
  179. package/dist/metrics/context-composition-tracker.js +202 -0
  180. package/dist/metrics/context-composition-tracker.js.map +1 -0
  181. package/dist/metrics/context-tracker.d.ts +78 -0
  182. package/dist/metrics/context-tracker.d.ts.map +1 -0
  183. package/dist/metrics/context-tracker.js +222 -0
  184. package/dist/metrics/context-tracker.js.map +1 -0
  185. package/dist/metrics/context-window-tracker.d.ts +18 -0
  186. package/dist/metrics/context-window-tracker.d.ts.map +1 -0
  187. package/dist/metrics/context-window-tracker.js +35 -0
  188. package/dist/metrics/context-window-tracker.js.map +1 -0
  189. package/dist/metrics/cost-forecast.d.ts +36 -0
  190. package/dist/metrics/cost-forecast.d.ts.map +1 -0
  191. package/dist/metrics/cost-forecast.js +91 -0
  192. package/dist/metrics/cost-forecast.js.map +1 -0
  193. package/dist/metrics/cost-per-outcome.d.ts +102 -0
  194. package/dist/metrics/cost-per-outcome.d.ts.map +1 -0
  195. package/dist/metrics/cost-per-outcome.js +266 -0
  196. package/dist/metrics/cost-per-outcome.js.map +1 -0
  197. package/dist/metrics/cost-tracker.d.ts +78 -0
  198. package/dist/metrics/cost-tracker.d.ts.map +1 -0
  199. package/dist/metrics/cost-tracker.js +169 -0
  200. package/dist/metrics/cost-tracker.js.map +1 -0
  201. package/dist/metrics/decision-tracker.d.ts +49 -0
  202. package/dist/metrics/decision-tracker.d.ts.map +1 -0
  203. package/dist/metrics/decision-tracker.js +161 -0
  204. package/dist/metrics/decision-tracker.js.map +1 -0
  205. package/dist/metrics/efficiency-score.d.ts +80 -0
  206. package/dist/metrics/efficiency-score.d.ts.map +1 -0
  207. package/dist/metrics/efficiency-score.js +219 -0
  208. package/dist/metrics/efficiency-score.js.map +1 -0
  209. package/dist/metrics/git-efficiency-tracker.d.ts +165 -0
  210. package/dist/metrics/git-efficiency-tracker.d.ts.map +1 -0
  211. package/dist/metrics/git-efficiency-tracker.js +1056 -0
  212. package/dist/metrics/git-efficiency-tracker.js.map +1 -0
  213. package/dist/metrics/index.d.ts +26 -0
  214. package/dist/metrics/index.d.ts.map +1 -0
  215. package/dist/metrics/index.js +14 -0
  216. package/dist/metrics/index.js.map +1 -0
  217. package/dist/metrics/instruction-drift-tracker.d.ts +69 -0
  218. package/dist/metrics/instruction-drift-tracker.d.ts.map +1 -0
  219. package/dist/metrics/instruction-drift-tracker.js +213 -0
  220. package/dist/metrics/instruction-drift-tracker.js.map +1 -0
  221. package/dist/metrics/latency-decomposition.d.ts +50 -0
  222. package/dist/metrics/latency-decomposition.d.ts.map +1 -0
  223. package/dist/metrics/latency-decomposition.js +112 -0
  224. package/dist/metrics/latency-decomposition.js.map +1 -0
  225. package/dist/metrics/latency-tracker.d.ts +33 -0
  226. package/dist/metrics/latency-tracker.d.ts.map +1 -0
  227. package/dist/metrics/latency-tracker.js +93 -0
  228. package/dist/metrics/latency-tracker.js.map +1 -0
  229. package/dist/metrics/live-session-registry.d.ts +29 -0
  230. package/dist/metrics/live-session-registry.d.ts.map +1 -0
  231. package/dist/metrics/live-session-registry.js +103 -0
  232. package/dist/metrics/live-session-registry.js.map +1 -0
  233. package/dist/metrics/model-usage-tracker.d.ts +21 -0
  234. package/dist/metrics/model-usage-tracker.d.ts.map +1 -0
  235. package/dist/metrics/model-usage-tracker.js +53 -0
  236. package/dist/metrics/model-usage-tracker.js.map +1 -0
  237. package/dist/metrics/percentile.d.ts +5 -0
  238. package/dist/metrics/percentile.d.ts.map +1 -0
  239. package/dist/metrics/percentile.js +10 -0
  240. package/dist/metrics/percentile.js.map +1 -0
  241. package/dist/metrics/personal-coach.d.ts +47 -0
  242. package/dist/metrics/personal-coach.d.ts.map +1 -0
  243. package/dist/metrics/personal-coach.js +241 -0
  244. package/dist/metrics/personal-coach.js.map +1 -0
  245. package/dist/metrics/prompt-feedback.d.ts +75 -0
  246. package/dist/metrics/prompt-feedback.d.ts.map +1 -0
  247. package/dist/metrics/prompt-feedback.js +286 -0
  248. package/dist/metrics/prompt-feedback.js.map +1 -0
  249. package/dist/metrics/proxy-metrics.d.ts +54 -0
  250. package/dist/metrics/proxy-metrics.d.ts.map +1 -0
  251. package/dist/metrics/proxy-metrics.js +228 -0
  252. package/dist/metrics/proxy-metrics.js.map +1 -0
  253. package/dist/metrics/quality-proxy-tracker.d.ts +51 -0
  254. package/dist/metrics/quality-proxy-tracker.d.ts.map +1 -0
  255. package/dist/metrics/quality-proxy-tracker.js +162 -0
  256. package/dist/metrics/quality-proxy-tracker.js.map +1 -0
  257. package/dist/metrics/recommendation-engine.d.ts +72 -0
  258. package/dist/metrics/recommendation-engine.d.ts.map +1 -0
  259. package/dist/metrics/recommendation-engine.js +207 -0
  260. package/dist/metrics/recommendation-engine.js.map +1 -0
  261. package/dist/metrics/retry-detector.d.ts +43 -0
  262. package/dist/metrics/retry-detector.d.ts.map +1 -0
  263. package/dist/metrics/retry-detector.js +179 -0
  264. package/dist/metrics/retry-detector.js.map +1 -0
  265. package/dist/metrics/session-tracker.d.ts +75 -0
  266. package/dist/metrics/session-tracker.d.ts.map +1 -0
  267. package/dist/metrics/session-tracker.js +249 -0
  268. package/dist/metrics/session-tracker.js.map +1 -0
  269. package/dist/metrics/task-completion-tracker.d.ts +15 -0
  270. package/dist/metrics/task-completion-tracker.d.ts.map +1 -0
  271. package/dist/metrics/task-completion-tracker.js +27 -0
  272. package/dist/metrics/task-completion-tracker.js.map +1 -0
  273. package/dist/metrics/task-detector.d.ts +84 -0
  274. package/dist/metrics/task-detector.d.ts.map +1 -0
  275. package/dist/metrics/task-detector.js +302 -0
  276. package/dist/metrics/task-detector.js.map +1 -0
  277. package/dist/metrics/tool-selection-scorer.d.ts +39 -0
  278. package/dist/metrics/tool-selection-scorer.d.ts.map +1 -0
  279. package/dist/metrics/tool-selection-scorer.js +193 -0
  280. package/dist/metrics/tool-selection-scorer.js.map +1 -0
  281. package/dist/metrics/trend-analyzer.d.ts +92 -0
  282. package/dist/metrics/trend-analyzer.d.ts.map +1 -0
  283. package/dist/metrics/trend-analyzer.js +293 -0
  284. package/dist/metrics/trend-analyzer.js.map +1 -0
  285. package/dist/metrics/turn-cost-attributor.d.ts +41 -0
  286. package/dist/metrics/turn-cost-attributor.d.ts.map +1 -0
  287. package/dist/metrics/turn-cost-attributor.js +118 -0
  288. package/dist/metrics/turn-cost-attributor.js.map +1 -0
  289. package/dist/metrics/turn-tracker.d.ts +49 -0
  290. package/dist/metrics/turn-tracker.d.ts.map +1 -0
  291. package/dist/metrics/turn-tracker.js +192 -0
  292. package/dist/metrics/turn-tracker.js.map +1 -0
  293. package/dist/platforms/amazon-q-adapter.d.ts +10 -0
  294. package/dist/platforms/amazon-q-adapter.d.ts.map +1 -0
  295. package/dist/platforms/amazon-q-adapter.js +75 -0
  296. package/dist/platforms/amazon-q-adapter.js.map +1 -0
  297. package/dist/platforms/claude-code-adapter.d.ts +10 -0
  298. package/dist/platforms/claude-code-adapter.d.ts.map +1 -0
  299. package/dist/platforms/claude-code-adapter.js +48 -0
  300. package/dist/platforms/claude-code-adapter.js.map +1 -0
  301. package/dist/platforms/continue-adapter.d.ts +10 -0
  302. package/dist/platforms/continue-adapter.d.ts.map +1 -0
  303. package/dist/platforms/continue-adapter.js +73 -0
  304. package/dist/platforms/continue-adapter.js.map +1 -0
  305. package/dist/platforms/copilot-adapter.d.ts +37 -0
  306. package/dist/platforms/copilot-adapter.d.ts.map +1 -0
  307. package/dist/platforms/copilot-adapter.js +66 -0
  308. package/dist/platforms/copilot-adapter.js.map +1 -0
  309. package/dist/platforms/cursor-adapter.d.ts +10 -0
  310. package/dist/platforms/cursor-adapter.d.ts.map +1 -0
  311. package/dist/platforms/cursor-adapter.js +60 -0
  312. package/dist/platforms/cursor-adapter.js.map +1 -0
  313. package/dist/platforms/generic-mcp-adapter.d.ts +113 -0
  314. package/dist/platforms/generic-mcp-adapter.d.ts.map +1 -0
  315. package/dist/platforms/generic-mcp-adapter.js +139 -0
  316. package/dist/platforms/generic-mcp-adapter.js.map +1 -0
  317. package/dist/platforms/index.d.ts +15 -0
  318. package/dist/platforms/index.d.ts.map +1 -0
  319. package/dist/platforms/index.js +12 -0
  320. package/dist/platforms/index.js.map +1 -0
  321. package/dist/platforms/platform-registry.d.ts +11 -0
  322. package/dist/platforms/platform-registry.d.ts.map +1 -0
  323. package/dist/platforms/platform-registry.js +54 -0
  324. package/dist/platforms/platform-registry.js.map +1 -0
  325. package/dist/platforms/types.d.ts +36 -0
  326. package/dist/platforms/types.d.ts.map +1 -0
  327. package/dist/platforms/types.js +2 -0
  328. package/dist/platforms/types.js.map +1 -0
  329. package/dist/platforms/windsurf-adapter.d.ts +10 -0
  330. package/dist/platforms/windsurf-adapter.d.ts.map +1 -0
  331. package/dist/platforms/windsurf-adapter.js +63 -0
  332. package/dist/platforms/windsurf-adapter.js.map +1 -0
  333. package/dist/platforms/zed-adapter.d.ts +10 -0
  334. package/dist/platforms/zed-adapter.d.ts.map +1 -0
  335. package/dist/platforms/zed-adapter.js +72 -0
  336. package/dist/platforms/zed-adapter.js.map +1 -0
  337. package/dist/proxy/index.d.ts +7 -0
  338. package/dist/proxy/index.d.ts.map +1 -0
  339. package/dist/proxy/index.js +5 -0
  340. package/dist/proxy/index.js.map +1 -0
  341. package/dist/proxy/otlp-receiver.d.ts +28 -0
  342. package/dist/proxy/otlp-receiver.d.ts.map +1 -0
  343. package/dist/proxy/otlp-receiver.js +319 -0
  344. package/dist/proxy/otlp-receiver.js.map +1 -0
  345. package/dist/proxy/proxy-manager.d.ts +47 -0
  346. package/dist/proxy/proxy-manager.d.ts.map +1 -0
  347. package/dist/proxy/proxy-manager.js +338 -0
  348. package/dist/proxy/proxy-manager.js.map +1 -0
  349. package/dist/proxy/types.d.ts +72 -0
  350. package/dist/proxy/types.d.ts.map +1 -0
  351. package/dist/proxy/types.js +33 -0
  352. package/dist/proxy/types.js.map +1 -0
  353. package/dist/proxy/upstream-http.d.ts +26 -0
  354. package/dist/proxy/upstream-http.d.ts.map +1 -0
  355. package/dist/proxy/upstream-http.js +209 -0
  356. package/dist/proxy/upstream-http.js.map +1 -0
  357. package/dist/proxy/upstream-stdio.d.ts +25 -0
  358. package/dist/proxy/upstream-stdio.d.ts.map +1 -0
  359. package/dist/proxy/upstream-stdio.js +256 -0
  360. package/dist/proxy/upstream-stdio.js.map +1 -0
  361. package/dist/security/audit-trail.d.ts +74 -0
  362. package/dist/security/audit-trail.d.ts.map +1 -0
  363. package/dist/security/audit-trail.js +338 -0
  364. package/dist/security/audit-trail.js.map +1 -0
  365. package/dist/security/index.d.ts +5 -0
  366. package/dist/security/index.d.ts.map +1 -0
  367. package/dist/security/index.js +4 -0
  368. package/dist/security/index.js.map +1 -0
  369. package/dist/security/ssrf.d.ts +2 -0
  370. package/dist/security/ssrf.d.ts.map +1 -0
  371. package/dist/security/ssrf.js +126 -0
  372. package/dist/security/ssrf.js.map +1 -0
  373. package/dist/server.d.ts +14 -0
  374. package/dist/server.d.ts.map +1 -0
  375. package/dist/server.js +117 -0
  376. package/dist/server.js.map +1 -0
  377. package/dist/shared/__test-utils__/log-output.d.ts +49 -0
  378. package/dist/shared/__test-utils__/log-output.d.ts.map +1 -0
  379. package/dist/shared/__test-utils__/log-output.js +38 -0
  380. package/dist/shared/__test-utils__/log-output.js.map +1 -0
  381. package/dist/shared/config.d.ts +56 -0
  382. package/dist/shared/config.d.ts.map +1 -0
  383. package/dist/shared/config.js +290 -0
  384. package/dist/shared/config.js.map +1 -0
  385. package/dist/shared/errors.d.ts +139 -0
  386. package/dist/shared/errors.d.ts.map +1 -0
  387. package/dist/shared/errors.js +406 -0
  388. package/dist/shared/errors.js.map +1 -0
  389. package/dist/shared/events/factory.d.ts +143 -0
  390. package/dist/shared/events/factory.d.ts.map +1 -0
  391. package/dist/shared/events/factory.js +351 -0
  392. package/dist/shared/events/factory.js.map +1 -0
  393. package/dist/shared/events/index.d.ts +6 -0
  394. package/dist/shared/events/index.d.ts.map +1 -0
  395. package/dist/shared/events/index.js +3 -0
  396. package/dist/shared/events/index.js.map +1 -0
  397. package/dist/shared/events/serialize.d.ts +87 -0
  398. package/dist/shared/events/serialize.d.ts.map +1 -0
  399. package/dist/shared/events/serialize.js +510 -0
  400. package/dist/shared/events/serialize.js.map +1 -0
  401. package/dist/shared/events/types.d.ts +139 -0
  402. package/dist/shared/events/types.d.ts.map +1 -0
  403. package/dist/shared/events/types.js +2 -0
  404. package/dist/shared/events/types.js.map +1 -0
  405. package/dist/shared/harvest/event-buffer.d.ts +59 -0
  406. package/dist/shared/harvest/event-buffer.d.ts.map +1 -0
  407. package/dist/shared/harvest/event-buffer.js +100 -0
  408. package/dist/shared/harvest/event-buffer.js.map +1 -0
  409. package/dist/shared/harvest/harvest-scheduler.d.ts +200 -0
  410. package/dist/shared/harvest/harvest-scheduler.d.ts.map +1 -0
  411. package/dist/shared/harvest/harvest-scheduler.js +647 -0
  412. package/dist/shared/harvest/harvest-scheduler.js.map +1 -0
  413. package/dist/shared/harvest/index.d.ts +7 -0
  414. package/dist/shared/harvest/index.d.ts.map +1 -0
  415. package/dist/shared/harvest/index.js +4 -0
  416. package/dist/shared/harvest/index.js.map +1 -0
  417. package/dist/shared/harvest/metric-aggregator.d.ts +115 -0
  418. package/dist/shared/harvest/metric-aggregator.d.ts.map +1 -0
  419. package/dist/shared/harvest/metric-aggregator.js +247 -0
  420. package/dist/shared/harvest/metric-aggregator.js.map +1 -0
  421. package/dist/shared/index.d.ts +22 -0
  422. package/dist/shared/index.d.ts.map +1 -0
  423. package/dist/shared/index.js +13 -0
  424. package/dist/shared/index.js.map +1 -0
  425. package/dist/shared/logger.d.ts +57 -0
  426. package/dist/shared/logger.d.ts.map +1 -0
  427. package/dist/shared/logger.js +166 -0
  428. package/dist/shared/logger.js.map +1 -0
  429. package/dist/shared/pricing-data.d.ts +4 -0
  430. package/dist/shared/pricing-data.d.ts.map +1 -0
  431. package/dist/shared/pricing-data.js +473 -0
  432. package/dist/shared/pricing-data.js.map +1 -0
  433. package/dist/shared/pricing.d.ts +148 -0
  434. package/dist/shared/pricing.d.ts.map +1 -0
  435. package/dist/shared/pricing.js +528 -0
  436. package/dist/shared/pricing.js.map +1 -0
  437. package/dist/shared/redact.d.ts +33 -0
  438. package/dist/shared/redact.d.ts.map +1 -0
  439. package/dist/shared/redact.js +110 -0
  440. package/dist/shared/redact.js.map +1 -0
  441. package/dist/shared/timing.d.ts +96 -0
  442. package/dist/shared/timing.d.ts.map +1 -0
  443. package/dist/shared/timing.js +173 -0
  444. package/dist/shared/timing.js.map +1 -0
  445. package/dist/shared/tokens.d.ts +145 -0
  446. package/dist/shared/tokens.d.ts.map +1 -0
  447. package/dist/shared/tokens.js +492 -0
  448. package/dist/shared/tokens.js.map +1 -0
  449. package/dist/shared/transport/events-api.d.ts +14 -0
  450. package/dist/shared/transport/events-api.d.ts.map +1 -0
  451. package/dist/shared/transport/events-api.js +29 -0
  452. package/dist/shared/transport/events-api.js.map +1 -0
  453. package/dist/shared/transport/http-client.d.ts +49 -0
  454. package/dist/shared/transport/http-client.d.ts.map +1 -0
  455. package/dist/shared/transport/http-client.js +381 -0
  456. package/dist/shared/transport/http-client.js.map +1 -0
  457. package/dist/shared/transport/index.d.ts +10 -0
  458. package/dist/shared/transport/index.d.ts.map +1 -0
  459. package/dist/shared/transport/index.js +6 -0
  460. package/dist/shared/transport/index.js.map +1 -0
  461. package/dist/shared/transport/logs-api.d.ts +29 -0
  462. package/dist/shared/transport/logs-api.d.ts.map +1 -0
  463. package/dist/shared/transport/logs-api.js +40 -0
  464. package/dist/shared/transport/logs-api.js.map +1 -0
  465. package/dist/shared/transport/metric-api.d.ts +9 -0
  466. package/dist/shared/transport/metric-api.d.ts.map +1 -0
  467. package/dist/shared/transport/metric-api.js +39 -0
  468. package/dist/shared/transport/metric-api.js.map +1 -0
  469. package/dist/shared/transport/otlp-event-bridge.d.ts +22 -0
  470. package/dist/shared/transport/otlp-event-bridge.d.ts.map +1 -0
  471. package/dist/shared/transport/otlp-event-bridge.js +50 -0
  472. package/dist/shared/transport/otlp-event-bridge.js.map +1 -0
  473. package/dist/shared/transport/otlp-shared.d.ts +14 -0
  474. package/dist/shared/transport/otlp-shared.d.ts.map +1 -0
  475. package/dist/shared/transport/otlp-shared.js +49 -0
  476. package/dist/shared/transport/otlp-shared.js.map +1 -0
  477. package/dist/shared/transport/otlp-transport.d.ts +58 -0
  478. package/dist/shared/transport/otlp-transport.d.ts.map +1 -0
  479. package/dist/shared/transport/otlp-transport.js +236 -0
  480. package/dist/shared/transport/otlp-transport.js.map +1 -0
  481. package/dist/shared/transport/types.d.ts +129 -0
  482. package/dist/shared/transport/types.d.ts.map +1 -0
  483. package/dist/shared/transport/types.js +2 -0
  484. package/dist/shared/transport/types.js.map +1 -0
  485. package/dist/shared/version.d.ts +2 -0
  486. package/dist/shared/version.d.ts.map +1 -0
  487. package/dist/shared/version.js +2 -0
  488. package/dist/shared/version.js.map +1 -0
  489. package/dist/storage/index.d.ts +7 -0
  490. package/dist/storage/index.d.ts.map +1 -0
  491. package/dist/storage/index.js +4 -0
  492. package/dist/storage/index.js.map +1 -0
  493. package/dist/storage/local-store.d.ts +153 -0
  494. package/dist/storage/local-store.d.ts.map +1 -0
  495. package/dist/storage/local-store.js +719 -0
  496. package/dist/storage/local-store.js.map +1 -0
  497. package/dist/storage/retention.d.ts +2 -0
  498. package/dist/storage/retention.d.ts.map +1 -0
  499. package/dist/storage/retention.js +53 -0
  500. package/dist/storage/retention.js.map +1 -0
  501. package/dist/storage/session-store.d.ts +97 -0
  502. package/dist/storage/session-store.d.ts.map +1 -0
  503. package/dist/storage/session-store.js +391 -0
  504. package/dist/storage/session-store.js.map +1 -0
  505. package/dist/storage/types.d.ts +64 -0
  506. package/dist/storage/types.d.ts.map +1 -0
  507. package/dist/storage/types.js +2 -0
  508. package/dist/storage/types.js.map +1 -0
  509. package/dist/storage/weekly-summary.d.ts +61 -0
  510. package/dist/storage/weekly-summary.d.ts.map +1 -0
  511. package/dist/storage/weekly-summary.js +243 -0
  512. package/dist/storage/weekly-summary.js.map +1 -0
  513. package/dist/tools/analytics-tools.d.ts +101 -0
  514. package/dist/tools/analytics-tools.d.ts.map +1 -0
  515. package/dist/tools/analytics-tools.js +71 -0
  516. package/dist/tools/analytics-tools.js.map +1 -0
  517. package/dist/tools/cost-tools.d.ts +121 -0
  518. package/dist/tools/cost-tools.d.ts.map +1 -0
  519. package/dist/tools/cost-tools.js +174 -0
  520. package/dist/tools/cost-tools.js.map +1 -0
  521. package/dist/tools/cross-session-tools.d.ts +376 -0
  522. package/dist/tools/cross-session-tools.d.ts.map +1 -0
  523. package/dist/tools/cross-session-tools.js +820 -0
  524. package/dist/tools/cross-session-tools.js.map +1 -0
  525. package/dist/tools/extended-analytics-tools.d.ts +164 -0
  526. package/dist/tools/extended-analytics-tools.d.ts.map +1 -0
  527. package/dist/tools/extended-analytics-tools.js +121 -0
  528. package/dist/tools/extended-analytics-tools.js.map +1 -0
  529. package/dist/tools/index.d.ts +7 -0
  530. package/dist/tools/index.d.ts.map +1 -0
  531. package/dist/tools/index.js +4 -0
  532. package/dist/tools/index.js.map +1 -0
  533. package/dist/tools/session-stats.d.ts +162 -0
  534. package/dist/tools/session-stats.d.ts.map +1 -0
  535. package/dist/tools/session-stats.js +1054 -0
  536. package/dist/tools/session-stats.js.map +1 -0
  537. package/dist/tools/workflow-tools.d.ts +126 -0
  538. package/dist/tools/workflow-tools.d.ts.map +1 -0
  539. package/dist/tools/workflow-tools.js +274 -0
  540. package/dist/tools/workflow-tools.js.map +1 -0
  541. package/dist/tracing/mcp-tracer.d.ts +4 -0
  542. package/dist/tracing/mcp-tracer.d.ts.map +1 -0
  543. package/dist/tracing/mcp-tracer.js +14 -0
  544. package/dist/tracing/mcp-tracer.js.map +1 -0
  545. package/dist/tracing/session-span.d.ts +14 -0
  546. package/dist/tracing/session-span.d.ts.map +1 -0
  547. package/dist/tracing/session-span.js +53 -0
  548. package/dist/tracing/session-span.js.map +1 -0
  549. package/dist/tracing/task-span-tracker.d.ts +11 -0
  550. package/dist/tracing/task-span-tracker.d.ts.map +1 -0
  551. package/dist/tracing/task-span-tracker.js +59 -0
  552. package/dist/tracing/task-span-tracker.js.map +1 -0
  553. package/dist/tracing/tool-call-span.d.ts +4 -0
  554. package/dist/tracing/tool-call-span.d.ts.map +1 -0
  555. package/dist/tracing/tool-call-span.js +60 -0
  556. package/dist/tracing/tool-call-span.js.map +1 -0
  557. package/dist/transport/index.d.ts +3 -0
  558. package/dist/transport/index.d.ts.map +1 -0
  559. package/dist/transport/index.js +2 -0
  560. package/dist/transport/index.js.map +1 -0
  561. package/dist/transport/log-ingest.d.ts +42 -0
  562. package/dist/transport/log-ingest.d.ts.map +1 -0
  563. package/dist/transport/log-ingest.js +151 -0
  564. package/dist/transport/log-ingest.js.map +1 -0
  565. package/dist/transport/nr-ingest.d.ts +171 -0
  566. package/dist/transport/nr-ingest.d.ts.map +1 -0
  567. package/dist/transport/nr-ingest.js +659 -0
  568. package/dist/transport/nr-ingest.js.map +1 -0
  569. package/dist/types.d.ts +45 -0
  570. package/dist/types.d.ts.map +1 -0
  571. package/dist/types.js +2 -0
  572. package/dist/types.js.map +1 -0
  573. package/dist/web/assets/index-BrL281N-.css +2 -0
  574. package/dist/web/assets/index-CcaYZzXm.js +42 -0
  575. package/dist/web/favicon.svg +15 -0
  576. package/dist/web/index.html +15 -0
  577. package/examples/local-alert-rules.json +106 -0
  578. package/package.json +129 -1
@@ -0,0 +1,510 @@
1
+ import { createLogger } from '../logger.js';
2
+ const serializeLogger = createLogger('events-serialize');
3
+ /**
4
+ * NR-reserved attribute names + library-internal namespaces a custom
5
+ * attribute key must NOT collide with. The `custom.`
6
+ * prefix already scopes most user-supplied keys safely, but we enforce a
7
+ * deny-list against the bare key (pre-prefix) so callers can't smuggle a
8
+ * reserved attribute name in via `customAttributes` and confuse NRQL
9
+ * dashboards downstream.
10
+ *
11
+ * Membership rules:
12
+ * - NR Events API reserved attributes: `eventType`, `timestamp`,
13
+ * `accountId`, `entity.guid`, `appId`. NR rejects events that try to
14
+ * overwrite these via attribute payload, but the rejection is silent
15
+ * at ingest — better to fail-fast with a debug log here.
16
+ * - Library-internal namespaces: any key starting with `nr.` or
17
+ * `gen_ai.` would land at `custom.nr.<x>` / `custom.gen_ai.<x>`
18
+ * after prefixing — which doesn't collide, but is misleading because
19
+ * the bare `nr.<x>` and `gen_ai.<x>` namespaces ARE reserved at the
20
+ * top level. Reject the bare-key form to avoid the cognitive trap.
21
+ * - `schemaVersion` (§6.10) — reserved for the library's own use.
22
+ * - `type` — easy to confuse with NR's `eventType`; many dashboards
23
+ * use `type` for log/event categorization (2 history).
24
+ */
25
+ const RESERVED_CUSTOM_KEYS = new Set([
26
+ 'eventType',
27
+ 'timestamp',
28
+ 'accountId',
29
+ 'entity.guid',
30
+ 'appId',
31
+ 'schemaVersion',
32
+ 'type',
33
+ ]);
34
+ function isReservedCustomKey(key) {
35
+ if (RESERVED_CUSTOM_KEYS.has(key))
36
+ return true;
37
+ if (key.startsWith('nr.'))
38
+ return true;
39
+ if (key.startsWith('gen_ai.'))
40
+ return true;
41
+ return false;
42
+ }
43
+ /**
44
+ * Apply customAttribute clipping (§3.3.5, §6.3) and reject keys that
45
+ * would collide with reserved/internal namespaces (§6.12). Drop +
46
+ * debug-log on rejection so misuse is discoverable but doesn't fail
47
+ * the entire event.
48
+ */
49
+ function applyCustomAttributes(data, custom, options, eventType) {
50
+ for (const [key, value] of Object.entries(custom)) {
51
+ if (isReservedCustomKey(key)) {
52
+ serializeLogger.debug(`${eventType}: customAttributes key "${key}" is reserved — dropping`, {
53
+ eventType,
54
+ key,
55
+ });
56
+ continue;
57
+ }
58
+ data[`custom.${key}`] = clipCustomAttribute(value, options);
59
+ }
60
+ }
61
+ // NR Events API caps attribute values at 4096 UTF-8 bytes (§S2).
62
+ // Truncating by character count can still exceed the byte cap for multi-byte
63
+ // scripts (CJK = 3 bytes/char, emoji = 4 bytes/char). Truncate by byte count.
64
+ const NR_VALUE_MAX_BYTES = 4096;
65
+ const NR_VALUE_SUFFIX = '...'; // 3 bytes (ASCII)
66
+ // §11.7: shared helper used by both truncate() and clipCustomAttribute().
67
+ // Finds the longest code-point prefix of `s` whose UTF-8 byte length fits
68
+ // within `maxBytes`, then appends '...'. Called only when the string is
69
+ // already known to exceed `maxBytes`.
70
+ //
71
+ // Uses binary search (O(log n) Buffer.byteLength calls) instead of the
72
+ // previous linear-decrement loop (O(n) calls). For a worst-case string of
73
+ // all 4-byte emoji at the 4096-byte cap, this reduces ~1024 Buffer.byteLength
74
+ // calls to ~12.
75
+ const SUFFIX_BYTES = Buffer.byteLength(NR_VALUE_SUFFIX, 'utf8'); // 3 (ASCII)
76
+ function truncateToBytes(s, maxBytes) {
77
+ const target = maxBytes - SUFFIX_BYTES;
78
+ const codePoints = Array.from(s);
79
+ // Binary search for the largest cut that fits within target bytes.
80
+ let lo = 0;
81
+ let hi = codePoints.length;
82
+ while (lo < hi) {
83
+ const mid = (lo + hi + 1) >> 1;
84
+ if (Buffer.byteLength(codePoints.slice(0, mid).join(''), 'utf8') <= target) {
85
+ lo = mid;
86
+ }
87
+ else {
88
+ hi = mid - 1;
89
+ }
90
+ }
91
+ return codePoints.slice(0, lo).join('') + NR_VALUE_SUFFIX;
92
+ }
93
+ function truncate(s) {
94
+ // Fast path: ASCII-only strings — byte length == char length.
95
+ if (s.length <= NR_VALUE_MAX_BYTES / 4)
96
+ return s;
97
+ if (Buffer.byteLength(s, 'utf8') <= NR_VALUE_MAX_BYTES)
98
+ return s;
99
+ return truncateToBytes(s, NR_VALUE_MAX_BYTES);
100
+ }
101
+ // `customAttributes` is the one channel that lets a
102
+ // caller smuggle arbitrary string content into telemetry. In high-security
103
+ // mode we clip every string custom attribute to 256 chars so a misuse like
104
+ // `customAttributes: { lastUserMessage: <whole prompt> }` cannot exfiltrate
105
+ // content. Numbers pass through unchanged. Structural fields like
106
+ // `toolNames`, `contentBlockTypes`, and `description` are NOT clipped —
107
+ // they are bounded enum/identifier metadata, not free-form user input.
108
+ //
109
+ // Even in normal mode, a string custom attribute that
110
+ // exceeds NR's per-attribute byte cap (4096) gets the entire event rejected
111
+ // or silently truncated by the Events API. Apply NR_VALUE_MAX as a floor on
112
+ // every string custom attribute so callers cannot accidentally drop their
113
+ // own events by passing a long field. The high-security 256-char clip runs
114
+ // on top of that.
115
+ const CUSTOM_ATTR_MAX_HS_BYTES = 256;
116
+ function clipCustomAttribute(value, options) {
117
+ // booleans pass through alongside strings and numbers.
118
+ if (typeof value !== 'string')
119
+ return value;
120
+ const maxBytes = options?.highSecurity === true ? CUSTOM_ATTR_MAX_HS_BYTES : NR_VALUE_MAX_BYTES;
121
+ if (Buffer.byteLength(value, 'utf8') <= maxBytes)
122
+ return value;
123
+ return truncateToBytes(value, maxBytes);
124
+ }
125
+ /**
126
+ * Maps the library's internal `AiProvider` literal to the canonical
127
+ * `gen_ai.provider.name` value defined by the OpenTelemetry GenAI semantic
128
+ * conventions. The wire field is still emitted as
129
+ * `gen_ai.system` for backward-compat with existing NR dashboards — that
130
+ * was the previous OTel attribute name (the spec renamed `gen_ai.system`
131
+ * to `gen_ai.provider.name` but the value enum is the same registry).
132
+ *
133
+ * The OTel spec mixes dot-case (`aws.bedrock`, `gcp.gemini`,
134
+ * `azure.ai.openai`, `ibm.watsonx.ai`) and underscore-case (`mistral_ai`,
135
+ * `x_ai`, `moonshot_ai`, `deepseek`, `groq`). The visual inconsistency
136
+ * looks typo-prone but is faithful to the registry — *not* something to
137
+ * "normalize" by hand. When adding a new provider, look up its value at
138
+ * https://github.com/open-telemetry/semantic-conventions-genai (model/
139
+ * gen-ai/registry.yaml, `gen_ai.provider.name` members).
140
+ *
141
+ * `google` maps to `gcp.gemini` (the Gemini API at
142
+ * `generativelanguage.googleapis.com`) rather than the more generic
143
+ * `gcp.gen_ai` because the codebase's token-extraction path is
144
+ * Gemini-shape. Consumers calling Google's Vertex AI endpoint would
145
+ * see this stamp as well, but Vertex-specific telemetry would be
146
+ * better captured by widening `AiProvider` (out of scope for this
147
+ * spelling fix).
148
+ */
149
+ // Typed as Record<AiProvider, string> so a new AiProvider value causes a
150
+ // compile error until a gen_ai.system mapping is added here (§SER3).
151
+ const PROVIDER_TO_GENAI_SYSTEM = {
152
+ anthropic: 'anthropic',
153
+ google: 'gcp.gemini',
154
+ openai: 'openai',
155
+ bedrock: 'aws.bedrock',
156
+ mistral: 'mistral_ai',
157
+ cohere: 'cohere',
158
+ };
159
+ /**
160
+ * Maps the library's `AiRequestMethod` literal onto the canonical
161
+ * `gen_ai.operation.name` value. Predefined OTel
162
+ * values today are `chat`, `generate_content`, `embeddings`, plus
163
+ * `text_completion`. Method names that don't match any entry fall
164
+ * through and the `gen_ai.operation.name` attribute is omitted from
165
+ * the wire payload — this is the OTel-recommended behavior for
166
+ * unrecognized operations.
167
+ */
168
+ // Partial<Record<...>> so unrecognized methods fall through cleanly (§EV7).
169
+ // Unlike PROVIDER_TO_GENAI_SYSTEM (which uses non-Partial Record to enforce exhaustiveness),
170
+ // coverage here is intentionally partial — adding a new AiRequestMethod without an
171
+ // entry produces no compile error; the attribute is simply omitted per the OTel fallthrough
172
+ // described in the JSDoc above.
173
+ const METHOD_TO_GENAI_OPERATION = {
174
+ 'messages.create': 'chat',
175
+ 'messages.stream': 'chat',
176
+ 'models.generateContent': 'generate_content',
177
+ 'models.generateContentStream': 'generate_content',
178
+ 'models.embedContent': 'embeddings',
179
+ 'chat.completions.create': 'chat',
180
+ // §6.17 — OpenAI Node SDK: `client.embeddings.create({...})`.
181
+ 'embeddings.create': 'embeddings',
182
+ converse: 'chat',
183
+ 'converse-stream': 'chat',
184
+ 'chat.complete': 'chat',
185
+ 'chat.stream': 'chat',
186
+ chat: 'chat',
187
+ chatStream: 'chat',
188
+ // §6.17 — Cohere Node SDK: `client.embed(...)`.
189
+ embed: 'embeddings',
190
+ };
191
+ /**
192
+ * Event schema version. Bump whenever the wire-format
193
+ * shape of any serializer changes in a way that downstream NR dashboards
194
+ * built on the previous shape would silently mis-render. The current value
195
+ * is stamped on every emitted event (`schemaVersion: 1`) so dashboards can
196
+ * filter on `WHERE schemaVersion = 1` and catch a future migration before
197
+ * the data renders incorrectly.
198
+ *
199
+ * Bumping policy:
200
+ * - Add a field: NO bump required (new field is null/missing on old events).
201
+ * - Remove or rename a field: bump.
202
+ * - Change a field's type or unit: bump.
203
+ * - Change a field's semantic meaning: bump.
204
+ *
205
+ * The §4.9 metric-API summary migration is an analogous (separate) wire
206
+ * change and is covered by NR's metric `type` field, not this schema version.
207
+ */
208
+ export const EVENT_SCHEMA_VERSION = 1;
209
+ export function aiRequestToNrEvent(event, options) {
210
+ const data = {
211
+ eventType: 'AiRequest',
212
+ schemaVersion: EVENT_SCHEMA_VERSION,
213
+ id: event.id,
214
+ timestamp: event.timestamp,
215
+ provider: event.provider,
216
+ model: event.model,
217
+ requestMethod: event.requestMethod,
218
+ messageCount: event.messageCount,
219
+ toolCount: event.toolCount,
220
+ thinkingEnabled: event.thinkingEnabled,
221
+ streamingEnabled: event.streamingEnabled,
222
+ 'nr.appName': event['nr.appName'],
223
+ };
224
+ if (event.maxTokens !== null)
225
+ data.maxTokens = event.maxTokens;
226
+ if (event.temperature !== null)
227
+ data.temperature = event.temperature;
228
+ if (event.topP !== null)
229
+ data.topP = event.topP;
230
+ if (event.systemPromptLength !== null)
231
+ data.systemPromptLength = event.systemPromptLength;
232
+ if (event.toolNames.length > 0)
233
+ data.toolNames = truncate(JSON.stringify(event.toolNames));
234
+ if (event.thinkingBudgetTokens !== null)
235
+ data.thinkingBudgetTokens = event.thinkingBudgetTokens;
236
+ if (event['nr.entityGuid'] !== null)
237
+ data['nr.entityGuid'] = event['nr.entityGuid'];
238
+ // GenAI semantic convention attributes (OTel spec, experimental)
239
+ const genAiSystem = PROVIDER_TO_GENAI_SYSTEM[event.provider] ?? event.provider;
240
+ data['gen_ai.system'] = genAiSystem;
241
+ data['gen_ai.request.model'] = event.model;
242
+ const genAiOperation = METHOD_TO_GENAI_OPERATION[event.requestMethod];
243
+ if (genAiOperation)
244
+ data['gen_ai.operation.name'] = genAiOperation;
245
+ if (event.maxTokens !== null)
246
+ data['gen_ai.request.max_tokens'] = event.maxTokens;
247
+ if (event.temperature !== null)
248
+ data['gen_ai.request.temperature'] = event.temperature;
249
+ if (event.topP !== null)
250
+ data['gen_ai.request.top_p'] = event.topP;
251
+ data['gen_ai.request.stream'] = event.streamingEnabled;
252
+ applyCustomAttributes(data, event.customAttributes, options, String(data.eventType));
253
+ return data;
254
+ }
255
+ export function aiResponseToNrEvent(event, options) {
256
+ const data = {
257
+ eventType: 'AiResponse',
258
+ schemaVersion: EVENT_SCHEMA_VERSION,
259
+ id: event.id,
260
+ timestamp: event.timestamp,
261
+ provider: event.provider,
262
+ model: event.model,
263
+ durationMs: event.durationMs,
264
+ inputTokens: event.inputTokens,
265
+ outputTokens: event.outputTokens,
266
+ thinkingTokens: event.thinkingTokens,
267
+ cacheReadTokens: event.cacheReadTokens,
268
+ cacheCreationTokens: event.cacheCreationTokens,
269
+ totalTokens: event.totalTokens,
270
+ 'nr.appName': event['nr.appName'],
271
+ };
272
+ // emit `nr.entityGuid` so AiResponse events route to the
273
+ // owning NR entity surface, matching `aiRequestToNrEvent`. Without this the
274
+ // factory's entityGuid input was silently dropped at serialization time
275
+ // even though the AiResponse interface declared the field.
276
+ if (event['nr.entityGuid'] !== null)
277
+ data['nr.entityGuid'] = event['nr.entityGuid'];
278
+ if (event.timeToFirstTokenMs !== null)
279
+ data.timeToFirstTokenMs = event.timeToFirstTokenMs;
280
+ if (event.tokensPerSecond !== null)
281
+ data.tokensPerSecond = event.tokensPerSecond;
282
+ if (event.stopReason !== null)
283
+ data.stopReason = event.stopReason;
284
+ if (event.contentBlockTypes.length > 0) {
285
+ data.contentBlockTypes = truncate(JSON.stringify(event.contentBlockTypes));
286
+ }
287
+ if (event.costInputUsd !== null)
288
+ data['cost.inputUsd'] = event.costInputUsd;
289
+ if (event.costOutputUsd !== null)
290
+ data['cost.outputUsd'] = event.costOutputUsd;
291
+ if (event.costThinkingUsd !== null)
292
+ data['cost.thinkingUsd'] = event.costThinkingUsd;
293
+ if (event.costCacheReadUsd !== null)
294
+ data['cost.cacheReadUsd'] = event.costCacheReadUsd;
295
+ if (event.costCacheCreationUsd !== null) {
296
+ data['cost.cacheCreationUsd'] = event.costCacheCreationUsd;
297
+ }
298
+ if (event.costTotalUsd !== null)
299
+ data['cost.totalUsd'] = event.costTotalUsd;
300
+ if (event.error !== null) {
301
+ data['error.type'] = truncate(event.error.type);
302
+ // §6.4 — In high-security mode, drop error.message (may contain verbatim
303
+ // prompt fragments). error.type + error.statusCode still surface enough
304
+ // signal for triage without leaking user content via the error path.
305
+ if (options?.highSecurity !== true) {
306
+ data['error.message'] = truncate(event.error.message);
307
+ }
308
+ if (event.error.statusCode !== null)
309
+ data['error.statusCode'] = event.error.statusCode;
310
+ }
311
+ // GenAI semantic convention attributes (OTel spec, experimental)
312
+ const genAiSystem = PROVIDER_TO_GENAI_SYSTEM[event.provider] ?? event.provider;
313
+ data['gen_ai.system'] = genAiSystem;
314
+ data['gen_ai.response.model'] = event.model;
315
+ // Per OTel GenAI SemConv, gen_ai.usage.input_tokens MUST include ALL input
316
+ // tokens (cached + fresh). Provider semantics differ:
317
+ //
318
+ // Anthropic: inputTokens = fresh only; cache tokens are disjoint → sum all.
319
+ // Gemini / OpenAI: inputTokens already includes cached content (the cache
320
+ // tokens are a SUBSET of inputTokens, not separate) → using inputTokens
321
+ // alone is correct; adding cacheReadTokens would double-count (§S1).
322
+ // Bedrock, Mistral, Cohere: no cache token overlap → same as Anthropic.
323
+ const otelInputTokens = event.provider === 'google' || event.provider === 'openai'
324
+ ? event.inputTokens
325
+ : event.inputTokens + event.cacheReadTokens + event.cacheCreationTokens;
326
+ data['gen_ai.usage.input_tokens'] = otelInputTokens;
327
+ // §11.2: gen_ai.usage.output_tokens semantics differ by provider.
328
+ //
329
+ // Anthropic / Google: thinkingTokens is DISJOINT from outputTokens
330
+ // (extended-thinking and thought-summary tokens are separate) → add both.
331
+ // OpenAI: reasoning_tokens (→ thinkingTokens) is a SUBSET of
332
+ // completion_tokens (→ outputTokens) — adding it again double-counts.
333
+ // outputTokens alone equals completion_tokens which is what OTel
334
+ // gen_ai.usage.output_tokens should reflect for OpenAI.
335
+ // Bedrock / Mistral / Cohere: thinkingTokens is always 0, so both
336
+ // formulas produce the same result; disjoint form is correct.
337
+ data['gen_ai.usage.output_tokens'] =
338
+ event.provider === 'openai' ? event.outputTokens : event.outputTokens + event.thinkingTokens;
339
+ if (event.thinkingTokens > 0)
340
+ data['gen_ai.usage.reasoning.output_tokens'] = event.thinkingTokens;
341
+ if (event.cacheReadTokens > 0)
342
+ data['gen_ai.usage.cache_read.input_tokens'] = event.cacheReadTokens;
343
+ if (event.cacheCreationTokens > 0)
344
+ data['gen_ai.usage.cache_creation.input_tokens'] = event.cacheCreationTokens;
345
+ if (event.stopReason !== null)
346
+ data['gen_ai.response.finish_reason'] = event.stopReason;
347
+ applyCustomAttributes(data, event.customAttributes, options, String(data.eventType));
348
+ return data;
349
+ }
350
+ export function aiMessageToNrEvent(event, options) {
351
+ const data = {
352
+ eventType: 'AiMessage',
353
+ schemaVersion: EVENT_SCHEMA_VERSION,
354
+ id: event.id,
355
+ timestamp: event.timestamp,
356
+ role: event.role,
357
+ content: truncate(event.content),
358
+ contentLength: event.contentLength, // original (pre-truncation) length
359
+ sequence: event.sequence,
360
+ 'nr.appName': event['nr.appName'],
361
+ };
362
+ // emit `nr.entityGuid` so AiMessage events route to the
363
+ // owning NR entity surface, matching `aiRequestToNrEvent` / `aiResponseToNrEvent`.
364
+ if (event['nr.entityGuid'] !== null)
365
+ data['nr.entityGuid'] = event['nr.entityGuid'];
366
+ applyCustomAttributes(data, event.customAttributes, options, String(data.eventType));
367
+ return data;
368
+ }
369
+ /**
370
+ * dotted-key naming convention for the four newer
371
+ * agent-shaped event types (`AiAgentTaskSummary`, `AiAntiPattern`,
372
+ * `AiAgentMessage`, `AiContextReset`). These serializers emit attributes
373
+ * with a `<namespace>.<field>` shape (e.g. `ai.agent.task_duration_ms`,
374
+ * `ai.antipattern.severity`) alongside top-level non-namespaced fields
375
+ * (e.g. `id`, `timestamp`, `taskName`).
376
+ *
377
+ * The dotted form is the OTel-style and aligns with `gen_ai.*` already in
378
+ * use on AiRequest/AiResponse — operators querying these in NRQL must
379
+ * backtick-quote: `SELECT \`ai.agent.task_duration_ms\` FROM AiAgentTaskSummary`.
380
+ *
381
+ * The mixed top-level + namespaced shape (`taskName` flat, `ai.agent.*`
382
+ * dotted) is intentional: the top-level fields carry record identity that
383
+ * the eventType bucket already groups by (you query `FROM AiAgentTaskSummary`
384
+ * so `eventType` provides the namespace), while the `ai.<area>.*` fields
385
+ * cluster metric-shaped attributes by source area so dashboards can
386
+ * `SELECT keyset() WHERE attribute LIKE 'ai.agent.%'`.
387
+ *
388
+ * This convention is documented here rather than enforced — adding new
389
+ * fields to these event types should follow it for consistency, but the
390
+ * library does not validate the shape at runtime.
391
+ */
392
+ // NOTE (§EV6): The four agent-shaped event types below do not emit gen_ai.*
393
+ // OTel SemConv attributes (e.g. gen_ai.system) because they lack a `provider`
394
+ // field. Adding provider to these types is a post-0.1.0 task; until then,
395
+ // NRQL queries on gen_ai.* will not return these event types.
396
+ export function aiAgentTaskSummaryToNrEvent(event, options) {
397
+ const data = {
398
+ eventType: 'AiAgentTaskSummary',
399
+ schemaVersion: EVENT_SCHEMA_VERSION,
400
+ id: event.id,
401
+ timestamp: event.timestamp,
402
+ traceId: event.traceId,
403
+ spanId: event.spanId,
404
+ taskName: truncate(event.taskName),
405
+ 'ai.agent.task_duration_ms': event.durationMs,
406
+ 'ai.agent.total_steps': event.stepCount,
407
+ 'ai.agent.llm_calls_per_task': event.totalLlmCalls,
408
+ 'ai.agent.tool_calls_per_task': event.totalToolCalls,
409
+ 'ai.agent.tokens_per_task': event.totalTokens,
410
+ 'ai.agent.task_success': event.success,
411
+ 'nr.appName': event['nr.appName'],
412
+ };
413
+ if (event['nr.entityGuid'] !== null)
414
+ data['nr.entityGuid'] = event['nr.entityGuid'];
415
+ if (event.provider)
416
+ data['gen_ai.system'] = PROVIDER_TO_GENAI_SYSTEM[event.provider];
417
+ if (event.totalCostUsd !== null)
418
+ data['ai.agent.cost_per_task_usd'] = event.totalCostUsd;
419
+ if (event.delegationCount !== undefined)
420
+ data['ai.agent.delegation_count'] = event.delegationCount;
421
+ if (event.spawnCount !== undefined)
422
+ data['ai.agent.spawn_count'] = event.spawnCount;
423
+ if (event.delegationDepth !== undefined)
424
+ data['ai.agent.delegation_depth'] = event.delegationDepth;
425
+ if (event.interAgentMessages !== undefined)
426
+ data['ai.agent.inter_agent_messages'] = event.interAgentMessages;
427
+ if (event.delegationOverheadMs !== undefined)
428
+ data['ai.agent.delegation_overhead_ms'] = event.delegationOverheadMs;
429
+ applyCustomAttributes(data, event.customAttributes, options, String(data.eventType));
430
+ return data;
431
+ }
432
+ export function aiAntiPatternToNrEvent(event, options) {
433
+ const data = {
434
+ eventType: 'AiAntiPattern',
435
+ schemaVersion: EVENT_SCHEMA_VERSION,
436
+ id: event.id,
437
+ timestamp: event.timestamp,
438
+ traceId: event.traceId,
439
+ patternType: event.patternType,
440
+ severity: event.severity,
441
+ description: truncate(event.description),
442
+ 'nr.appName': event['nr.appName'],
443
+ };
444
+ if (event['nr.entityGuid'] !== null)
445
+ data['nr.entityGuid'] = event['nr.entityGuid'];
446
+ if (event.provider)
447
+ data['gen_ai.system'] = PROVIDER_TO_GENAI_SYSTEM[event.provider];
448
+ if (event.toolName !== undefined)
449
+ data.toolName = event.toolName;
450
+ if (event.repeatCount !== undefined)
451
+ data.repeatCount = event.repeatCount;
452
+ if (event.depthIndex !== undefined)
453
+ data.depthIndex = event.depthIndex;
454
+ if (event.taskComplexity !== undefined)
455
+ data.taskComplexity = event.taskComplexity;
456
+ if (event.contextPressure != null)
457
+ data.contextPressure = event.contextPressure;
458
+ if (event.tokenShare != null)
459
+ data.tokenShare = event.tokenShare;
460
+ if (event.attemptCount !== undefined)
461
+ data.attemptCount = event.attemptCount;
462
+ applyCustomAttributes(data, event.customAttributes, options, String(data.eventType));
463
+ return data;
464
+ }
465
+ export function aiAgentMessageToNrEvent(event, options) {
466
+ const data = {
467
+ eventType: 'AiAgentMessage',
468
+ schemaVersion: EVENT_SCHEMA_VERSION,
469
+ id: event.id,
470
+ timestamp: event.timestamp,
471
+ traceId: event.traceId,
472
+ fromAgent: truncate(event.fromAgent),
473
+ toAgent: truncate(event.toAgent),
474
+ messageType: truncate(event.messageType),
475
+ 'nr.appName': event['nr.appName'],
476
+ };
477
+ if (event['nr.entityGuid'] !== null)
478
+ data['nr.entityGuid'] = event['nr.entityGuid'];
479
+ if (event.provider)
480
+ data['gen_ai.system'] = PROVIDER_TO_GENAI_SYSTEM[event.provider];
481
+ if (event.tokenCount !== undefined)
482
+ data.tokenCount = event.tokenCount;
483
+ applyCustomAttributes(data, event.customAttributes, options, String(data.eventType));
484
+ return data;
485
+ }
486
+ export function aiContextResetToNrEvent(event, options) {
487
+ const data = {
488
+ eventType: 'AiContextReset',
489
+ schemaVersion: EVENT_SCHEMA_VERSION,
490
+ id: event.id,
491
+ timestamp: event.timestamp,
492
+ traceId: event.traceId,
493
+ conversationId: truncate(event.conversationId),
494
+ tokensBefore: event.tokensBefore,
495
+ tokensAfter: event.tokensAfter,
496
+ tokensRemoved: event.tokensRemoved,
497
+ compressionRatio: event.compressionRatio,
498
+ reason: event.reason,
499
+ 'nr.appName': event['nr.appName'],
500
+ };
501
+ if (event['nr.entityGuid'] !== null)
502
+ data['nr.entityGuid'] = event['nr.entityGuid'];
503
+ if (event.provider)
504
+ data['gen_ai.system'] = PROVIDER_TO_GENAI_SYSTEM[event.provider];
505
+ if (event.turnsRemoved !== undefined)
506
+ data.turnsRemoved = event.turnsRemoved;
507
+ applyCustomAttributes(data, event.customAttributes, options, String(data.eventType));
508
+ return data;
509
+ }
510
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/shared/events/serialize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ export type AiProvider = 'anthropic' | 'google' | 'openai' | 'bedrock' | 'mistral' | 'cohere';
2
+ export type AiRequestMethod = 'messages.create' | 'messages.stream' | 'models.generateContent' | 'models.generateContentStream' | 'models.embedContent' | 'chat.completions.create' | 'embeddings.create' | 'converse' | 'converse-stream' | 'chat.complete' | 'chat.stream' | 'chat' | 'chatStream' | 'embed';
3
+ export interface AiRequest {
4
+ readonly id: string;
5
+ readonly timestamp: number;
6
+ readonly provider: AiProvider;
7
+ readonly model: string;
8
+ readonly requestMethod: AiRequestMethod;
9
+ readonly maxTokens: number | null;
10
+ readonly temperature: number | null;
11
+ readonly topP: number | null;
12
+ readonly systemPromptLength: number | null;
13
+ readonly messageCount: number;
14
+ readonly toolCount: number;
15
+ readonly toolNames: string[];
16
+ readonly thinkingEnabled: boolean;
17
+ readonly thinkingBudgetTokens: number | null;
18
+ readonly streamingEnabled: boolean;
19
+ readonly 'nr.appName': string;
20
+ readonly 'nr.entityGuid': string | null;
21
+ readonly customAttributes: Record<string, string | number | boolean>;
22
+ }
23
+ export interface AiResponse {
24
+ readonly id: string;
25
+ readonly timestamp: number;
26
+ readonly provider: AiProvider;
27
+ readonly model: string;
28
+ readonly durationMs: number;
29
+ readonly timeToFirstTokenMs: number | null;
30
+ readonly tokensPerSecond: number | null;
31
+ readonly inputTokens: number;
32
+ readonly outputTokens: number;
33
+ readonly thinkingTokens: number;
34
+ readonly cacheReadTokens: number;
35
+ readonly cacheCreationTokens: number;
36
+ readonly totalTokens: number;
37
+ readonly costInputUsd: number | null;
38
+ readonly costOutputUsd: number | null;
39
+ readonly costThinkingUsd: number | null;
40
+ readonly costCacheReadUsd: number | null;
41
+ readonly costCacheCreationUsd: number | null;
42
+ readonly costTotalUsd: number | null;
43
+ readonly stopReason: string | null;
44
+ readonly contentBlockTypes: string[];
45
+ readonly error: {
46
+ type: string;
47
+ message: string;
48
+ statusCode: number | null;
49
+ } | null;
50
+ readonly 'nr.appName': string;
51
+ readonly 'nr.entityGuid': string | null;
52
+ readonly customAttributes: Record<string, string | number | boolean>;
53
+ }
54
+ export type AiMessageRole = 'system' | 'user' | 'assistant';
55
+ export interface AiMessage {
56
+ readonly id: string;
57
+ readonly timestamp: number;
58
+ readonly role: AiMessageRole;
59
+ readonly content: string;
60
+ readonly contentLength: number;
61
+ readonly sequence: number;
62
+ readonly 'nr.appName': string;
63
+ readonly 'nr.entityGuid': string | null;
64
+ readonly customAttributes: Record<string, string | number | boolean>;
65
+ }
66
+ export type NrEventData = Record<string, string | number | boolean>;
67
+ export interface AiAgentTaskSummary {
68
+ readonly id: string;
69
+ readonly timestamp: number;
70
+ readonly traceId: string;
71
+ readonly spanId: string;
72
+ readonly taskName: string;
73
+ readonly durationMs: number;
74
+ readonly totalLlmCalls: number;
75
+ readonly totalToolCalls: number;
76
+ readonly totalTokens: number;
77
+ readonly totalCostUsd: number | null;
78
+ readonly stepCount: number;
79
+ readonly success: boolean;
80
+ readonly provider?: AiProvider;
81
+ readonly delegationCount?: number;
82
+ readonly spawnCount?: number;
83
+ readonly delegationDepth?: number;
84
+ readonly interAgentMessages?: number;
85
+ readonly delegationOverheadMs?: number;
86
+ readonly 'nr.appName': string;
87
+ readonly 'nr.entityGuid': string | null;
88
+ readonly customAttributes: Record<string, string | number | boolean>;
89
+ }
90
+ export type AntiPatternType = 'spinning_wheels' | 'overthinking' | 'underthinking' | 'context_stuffing' | 'token_explosion' | 'bail_out';
91
+ export interface AiAntiPattern {
92
+ readonly id: string;
93
+ readonly timestamp: number;
94
+ readonly traceId: string;
95
+ readonly patternType: AntiPatternType;
96
+ readonly severity: 'low' | 'medium' | 'high';
97
+ readonly description: string;
98
+ readonly provider?: AiProvider;
99
+ readonly toolName?: string;
100
+ readonly repeatCount?: number;
101
+ readonly depthIndex?: number;
102
+ readonly taskComplexity?: 'simple' | 'moderate' | 'complex';
103
+ readonly contextPressure?: number | null;
104
+ readonly tokenShare?: number | null;
105
+ readonly attemptCount?: number;
106
+ readonly 'nr.appName': string;
107
+ readonly 'nr.entityGuid': string | null;
108
+ readonly customAttributes: Record<string, string | number | boolean>;
109
+ }
110
+ export interface AiAgentMessage {
111
+ readonly id: string;
112
+ readonly timestamp: number;
113
+ readonly traceId: string;
114
+ readonly fromAgent: string;
115
+ readonly toAgent: string;
116
+ readonly messageType: string;
117
+ readonly provider?: AiProvider;
118
+ readonly tokenCount?: number;
119
+ readonly 'nr.appName': string;
120
+ readonly 'nr.entityGuid': string | null;
121
+ readonly customAttributes: Record<string, string | number | boolean>;
122
+ }
123
+ export interface AiContextReset {
124
+ readonly id: string;
125
+ readonly timestamp: number;
126
+ readonly traceId: string;
127
+ readonly conversationId: string;
128
+ readonly tokensBefore: number;
129
+ readonly tokensAfter: number;
130
+ readonly tokensRemoved: number;
131
+ readonly compressionRatio: number;
132
+ readonly reason: 'summarization' | 'truncation' | 'sliding_window' | 'manual';
133
+ readonly provider?: AiProvider;
134
+ readonly turnsRemoved?: number;
135
+ readonly 'nr.appName': string;
136
+ readonly 'nr.entityGuid': string | null;
137
+ readonly customAttributes: Record<string, string | number | boolean>;
138
+ }
139
+ //# sourceMappingURL=types.d.ts.map