@newrelic/preflight 0.0.1-pre.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +860 -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 +103 -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 +125 -1
@@ -0,0 +1,406 @@
1
+ /**
2
+ * Canonical error classifications produced by {@link classifyError} and
3
+ * {@link classifyErrorDetailed}.
4
+ *
5
+ * Implemented as a `const` object plus derived string-literal union
6
+ * rather than a TypeScript `enum`, so that:
7
+ * - runtime usage (`AiErrorClassification.RATE_LIMIT`) keeps working
8
+ * identically for existing call sites;
9
+ * - the type is a string-literal union, matching every other
10
+ * enum-like type in this package (`AiProvider`, `AiRequestMethod`,
11
+ * `LogLevel`, `TransportMode`, etc.) — one consistent style;
12
+ * - bundlers can tree-shake unused members (TS enums emit a runtime
13
+ * object even when none of its members are referenced);
14
+ * - the wire-format strings (`'RATE_LIMIT'`, `'OVERLOADED'`, …) are
15
+ * usable directly as values without going through an enum lookup,
16
+ * which simplifies serialization paths.
17
+ */
18
+ export const AiErrorClassification = {
19
+ RATE_LIMIT: 'RATE_LIMIT',
20
+ OVERLOADED: 'OVERLOADED',
21
+ CONTENT_POLICY: 'CONTENT_POLICY',
22
+ CONTEXT_LENGTH_EXCEEDED: 'CONTEXT_LENGTH_EXCEEDED',
23
+ AUTHENTICATION: 'AUTHENTICATION',
24
+ NOT_FOUND: 'NOT_FOUND',
25
+ TIMEOUT: 'TIMEOUT',
26
+ SERVER_ERROR: 'SERVER_ERROR',
27
+ NETWORK_ERROR: 'NETWORK_ERROR',
28
+ UNKNOWN: 'UNKNOWN',
29
+ };
30
+ const NETWORK_CODES = new Set([
31
+ 'ECONNREFUSED',
32
+ 'ECONNRESET',
33
+ 'ECONNABORTED',
34
+ 'ENOTFOUND',
35
+ 'EPIPE',
36
+ 'EHOSTUNREACH',
37
+ 'ENETUNREACH',
38
+ ]);
39
+ const TIMEOUT_CODES = new Set([
40
+ 'ETIMEDOUT',
41
+ 'UND_ERR_CONNECT_TIMEOUT',
42
+ 'UND_ERR_HEADERS_TIMEOUT',
43
+ 'UND_ERR_BODY_TIMEOUT',
44
+ ]);
45
+ /**
46
+ * Classifications that `isRetryable()` reports as retryable. Exported as a
47
+ * `ReadonlySet` so consumers can build their own retry policy on top of the
48
+ * canonical list (e.g. layered backoff per category, custom routing) without
49
+ * having to re-derive it. Mutation is rejected at the type level.
50
+ */
51
+ export const RETRYABLE = new Set([
52
+ AiErrorClassification.RATE_LIMIT,
53
+ AiErrorClassification.OVERLOADED,
54
+ AiErrorClassification.TIMEOUT,
55
+ AiErrorClassification.SERVER_ERROR,
56
+ AiErrorClassification.NETWORK_ERROR,
57
+ ]);
58
+ // Walk the error.cause chain to find a classifiable `code` string.
59
+ // Returns the first code that is in NETWORK_CODES or TIMEOUT_CODES; if none
60
+ // is classified, falls back to the first string code found anywhere in the
61
+ // chain. This prevents a spurious top-level SDK code (e.g. 'UNKNOWN_ERROR')
62
+ // from blocking a classified cause-chain code (e.g. 'ECONNREFUSED') (§ER1).
63
+ // Bounded to 5 hops to guard against pathological chains.
64
+ function extractCode(error) {
65
+ let firstFound;
66
+ let cur = error;
67
+ for (let i = 0; i < 5 && cur != null && typeof cur === 'object'; i++) {
68
+ const code = cur.code;
69
+ if (typeof code === 'string') {
70
+ if (NETWORK_CODES.has(code) || TIMEOUT_CODES.has(code))
71
+ return code;
72
+ if (firstFound === undefined)
73
+ firstFound = code;
74
+ }
75
+ cur = cur.cause;
76
+ }
77
+ return firstFound;
78
+ }
79
+ /**
80
+ * Classify an arbitrary `unknown` error from a provider SDK or `fetch` into
81
+ * one of the canonical {@link AiErrorClassification} categories. The
82
+ * decision routes through HTTP status (when present), Node `code` for
83
+ * network/timeout cases, and provider-specific 400 disambiguation
84
+ * — content policy vs. context length vs. generic.
85
+ *
86
+ * Designed for retry-loop consumption — see {@link isRetryable} and
87
+ * {@link RETRYABLE} for the policy applied downstream. For UI / logging
88
+ * surfaces that need the original message + status alongside the
89
+ * classification, use {@link classifyErrorDetailed} instead.
90
+ *
91
+ * @param error The thrown value (Error, plain object, or anything else).
92
+ * @param provider The provider that produced the error — affects 400
93
+ * disambiguation and Anthropic-specific 529 (OVERLOADED) handling.
94
+ */
95
+ export function classifyError(error, provider) {
96
+ const err = error;
97
+ // Modern Node fetch (undici) wraps the underlying syscall code in
98
+ // error.cause.code rather than error.code directly. Walk the cause chain
99
+ // (bounded to 5 hops) to find the first code string (§E1).
100
+ const code = extractCode(err);
101
+ // 1. Network errors (no HTTP status, connection-level failure)
102
+ if (code && NETWORK_CODES.has(code)) {
103
+ return AiErrorClassification.NETWORK_ERROR;
104
+ }
105
+ // 2. Timeout errors
106
+ if (code && TIMEOUT_CODES.has(code)) {
107
+ return AiErrorClassification.TIMEOUT;
108
+ }
109
+ const nameOrMessage = `${err.name ?? ''} ${err.message ?? ''}`;
110
+ // Only apply the message-based timeout check when there is no HTTP status —
111
+ // for HTTP responses the switch below handles classified codes; the default
112
+ // case handles unknown statuses and will also check the message (§ER2).
113
+ // Use typeof check (not falsiness) so status:0 doesn't spuriously trigger
114
+ // message-based timeout detection (§ER1).
115
+ if (typeof err.status !== 'number' && /timeout/i.test(nameOrMessage)) {
116
+ return AiErrorClassification.TIMEOUT;
117
+ }
118
+ // 3. HTTP status-based classification
119
+ const status = err.status;
120
+ if (typeof status !== 'number') {
121
+ return AiErrorClassification.UNKNOWN;
122
+ }
123
+ switch (status) {
124
+ case 429:
125
+ return AiErrorClassification.RATE_LIMIT;
126
+ case 529:
127
+ // 529 is documented by Anthropic as "overloaded". Other providers
128
+ // either don't use it or use it ambiguously — gate by provider.
129
+ return provider === 'anthropic'
130
+ ? AiErrorClassification.OVERLOADED
131
+ : AiErrorClassification.UNKNOWN;
132
+ case 503:
133
+ // Google, OpenAI, and Bedrock all use 503 to indicate upstream overload.
134
+ // Anthropic uses 529 for overload (handled above); their 503 is a true
135
+ // server error. Mistral and Cohere are undocumented — default to
136
+ // SERVER_ERROR (still retryable, just categorised differently).
137
+ if (provider === 'google' || provider === 'openai' || provider === 'bedrock') {
138
+ return AiErrorClassification.OVERLOADED;
139
+ }
140
+ return AiErrorClassification.SERVER_ERROR;
141
+ case 401:
142
+ case 403:
143
+ return AiErrorClassification.AUTHENTICATION;
144
+ case 402:
145
+ // Payment Required — used by some providers for billing/quota exhaustion.
146
+ // Classified as UNKNOWN (non-retryable) because a payment issue cannot
147
+ // be resolved by retrying the same request (§ER4).
148
+ return AiErrorClassification.UNKNOWN;
149
+ case 404:
150
+ return AiErrorClassification.NOT_FOUND;
151
+ case 408: // Request Timeout (rare from LLM providers but standard HTTP)
152
+ case 504: // Gateway Timeout
153
+ return AiErrorClassification.TIMEOUT;
154
+ case 500:
155
+ case 502:
156
+ case 520: // Cloudflare unknown
157
+ case 521: // Cloudflare web server is down
158
+ case 522: // Cloudflare connection timed out
159
+ case 523: // Cloudflare origin unreachable
160
+ case 524: // Cloudflare a timeout occurred
161
+ return AiErrorClassification.SERVER_ERROR;
162
+ case 400:
163
+ return classify400(err, provider);
164
+ default:
165
+ // For unclassified numeric statuses (e.g. 425 "Too Early"), fall back to
166
+ // message-based timeout detection before returning UNKNOWN (§ER2).
167
+ if (/timeout/i.test(nameOrMessage))
168
+ return AiErrorClassification.TIMEOUT;
169
+ return AiErrorClassification.UNKNOWN;
170
+ }
171
+ }
172
+ // Provider-typed error codes (body-level `error.code` or `error.type`). Prefer
173
+ // these over message substring matching — SDKs expose stable typed codes that
174
+ // don't drift with version-to-version wording changes.
175
+ const CONTENT_POLICY_TYPED_CODES = new Set([
176
+ // OpenAI
177
+ 'content_filter',
178
+ 'content_policy_violation',
179
+ // Anthropic (specific names seen across SDK versions)
180
+ 'content_moderation_error',
181
+ ]);
182
+ const CONTEXT_LENGTH_TYPED_CODES = new Set([
183
+ // OpenAI
184
+ 'context_length_exceeded',
185
+ 'string_above_max_length',
186
+ // Anthropic
187
+ 'request_too_large',
188
+ ]);
189
+ // Narrowed message-matching fallbacks. The previous `/token|context/i` was
190
+ // over-broad — "invalid token in JSON body" matched as CONTEXT_LENGTH. These
191
+ // patterns require a context-related qualifier alongside "token"/"context".
192
+ const CONTEXT_LENGTH_MESSAGE_RE = /context.?(window|length|limit|size)|max.?tokens?\b|too.?long|exceeds? .*context/i;
193
+ const CONTENT_POLICY_MESSAGE_RE = /content.?polic|content.?filter|content.?moderation/i;
194
+ function classify400(err, provider) {
195
+ // 1. Typed body-level codes first (most reliable — survive SDK message drift).
196
+ const typedCode = err.error?.code ?? err.error?.type ?? '';
197
+ if (typedCode) {
198
+ if (CONTENT_POLICY_TYPED_CODES.has(typedCode))
199
+ return AiErrorClassification.CONTENT_POLICY;
200
+ if (CONTEXT_LENGTH_TYPED_CODES.has(typedCode)) {
201
+ return AiErrorClassification.CONTEXT_LENGTH_EXCEEDED;
202
+ }
203
+ }
204
+ // 2. Anthropic-specific typed-prefix pattern: SDK uses several `content_*`
205
+ // type variants (`content_policy_violation`, `content_validation_error`,
206
+ // etc.). Match by prefix instead of enumerating every variant.
207
+ if (provider === 'anthropic' && err.error?.type && /^content[_-]/i.test(err.error.type)) {
208
+ return AiErrorClassification.CONTENT_POLICY;
209
+ }
210
+ // 3. Message-substring fallback (narrowed to avoid false positives like
211
+ // "invalid token in JSON body"). Used both when no typed code is present
212
+ // (e.g. some Anthropic 400s carry only `message`) and when typed code is
213
+ // a generic catch-all (`invalid_request_error`).
214
+ const msg = err.message ?? '';
215
+ if (CONTENT_POLICY_MESSAGE_RE.test(msg))
216
+ return AiErrorClassification.CONTENT_POLICY;
217
+ if (CONTEXT_LENGTH_MESSAGE_RE.test(msg))
218
+ return AiErrorClassification.CONTEXT_LENGTH_EXCEEDED;
219
+ return AiErrorClassification.UNKNOWN;
220
+ }
221
+ /**
222
+ * Whether `classification` is one of the categories the library's retry
223
+ * loop will re-attempt: `RATE_LIMIT`, `OVERLOADED`, `TIMEOUT`,
224
+ * `SERVER_ERROR`, `NETWORK_ERROR`. Backed by the {@link RETRYABLE} set.
225
+ * Use this when implementing a custom retry policy on top of
226
+ * {@link classifyError}.
227
+ */
228
+ export function isRetryable(classification) {
229
+ return RETRYABLE.has(classification);
230
+ }
231
+ // Header names verified June 2026.
232
+ // - Anthropic: anthropic-ratelimit-* prefix
233
+ // - OpenAI: x-ratelimit-* prefix
234
+ // - Gemini: x-goog-quota-* for token/request counts; x-ratelimit-reset for reset
235
+ // - Mistral: x-ratelimit-*-tokens-minute / x-ratelimit-*-requests-minute
236
+ // - Bedrock: no standard rate-limit headers; throttling reflected in body (ThrottlingException) — intentional null
237
+ // - Cohere: no documented rate-limit headers for Chat v2 API — intentional null
238
+ const HEADER_MAP = new Map([
239
+ [
240
+ 'tokensRemaining',
241
+ [
242
+ 'anthropic-ratelimit-tokens-remaining',
243
+ 'x-ratelimit-remaining-tokens',
244
+ 'x-goog-quota-tokens-remaining',
245
+ 'x-ratelimit-remaining-tokens-minute',
246
+ ],
247
+ ],
248
+ [
249
+ 'requestsRemaining',
250
+ [
251
+ 'anthropic-ratelimit-requests-remaining',
252
+ 'x-ratelimit-remaining-requests',
253
+ 'x-goog-quota-requests-remaining',
254
+ 'x-ratelimit-remaining-requests-minute',
255
+ ],
256
+ ],
257
+ [
258
+ 'tokensReset',
259
+ [
260
+ 'anthropic-ratelimit-tokens-reset',
261
+ 'x-ratelimit-reset-tokens',
262
+ 'x-ratelimit-reset-tokens-minute',
263
+ ],
264
+ ],
265
+ [
266
+ 'requestsReset',
267
+ [
268
+ 'anthropic-ratelimit-requests-reset',
269
+ 'x-ratelimit-reset-requests',
270
+ 'x-ratelimit-reset',
271
+ 'x-ratelimit-reset-requests-minute',
272
+ ],
273
+ ],
274
+ ]);
275
+ function readHeader(headers, names) {
276
+ if (headers == null || typeof headers !== 'object')
277
+ return null;
278
+ const hdr = headers;
279
+ if (typeof hdr.get === 'function') {
280
+ // Headers API path: use .get() exclusively. A null return from .get()
281
+ // means the header is absent — do NOT fall through to property access,
282
+ // which would read unrelated inherited properties (§E5).
283
+ const getter = hdr.get;
284
+ for (const name of names) {
285
+ const val = getter.call(hdr, name);
286
+ if (typeof val === 'string')
287
+ return val;
288
+ if (typeof val === 'number')
289
+ return String(val);
290
+ }
291
+ return null;
292
+ }
293
+ // Plain object headers — property access.
294
+ // Only accept primitive header values to avoid '[object Object]' bleed.
295
+ for (const name of names) {
296
+ const val = hdr[name];
297
+ if (typeof val === 'string')
298
+ return val;
299
+ if (typeof val === 'number')
300
+ return String(val);
301
+ }
302
+ return null;
303
+ }
304
+ /**
305
+ * Extract rate-limit metadata from a provider error's `headers` field.
306
+ *
307
+ * Returns `null` when the error carries no `headers` at all,
308
+ * letting callers distinguish "no headers in the response" from "headers
309
+ * present but no rate-limit headers parsed". When `headers` is present but
310
+ * none of the recognized rate-limit headers parse, returns a `RateLimitInfo`
311
+ * with all four fields null.
312
+ *
313
+ * Provider coverage: Anthropic, OpenAI, Gemini, Mistral. Bedrock and Cohere
314
+ * intentionally return all-null — Bedrock exposes throttling in the
315
+ * ThrottlingException body rather than response headers; Cohere has no
316
+ * documented rate-limit headers for their Chat v2 API.
317
+ */
318
+ export function extractRateLimitHeaders(error) {
319
+ const headers = error?.headers;
320
+ if (headers == null)
321
+ return null;
322
+ const result = {
323
+ tokensRemaining: null,
324
+ requestsRemaining: null,
325
+ tokensReset: null,
326
+ requestsReset: null,
327
+ };
328
+ for (const [field, headerNames] of HEADER_MAP) {
329
+ const raw = readHeader(headers, headerNames);
330
+ if (raw === null)
331
+ continue;
332
+ if (field === 'tokensRemaining' || field === 'requestsRemaining') {
333
+ // Guard against empty string: Number('') === 0, which is valid but
334
+ // indistinguishable from a genuine "0 remaining" (§ER3).
335
+ const trimmed = raw.trim();
336
+ const parsed = Number(trimmed);
337
+ if (trimmed !== '' && !Number.isNaN(parsed)) {
338
+ result[field] = parsed;
339
+ }
340
+ }
341
+ else {
342
+ result[field] = raw;
343
+ }
344
+ }
345
+ return result;
346
+ }
347
+ /**
348
+ * Truncate `message` to `maxLength` chars (default 1024), suffixing `...`
349
+ * when truncation occurs. Useful for keeping provider error messages within
350
+ * NR's per-attribute 4096-byte limit before they're logged or attached to
351
+ * events.
352
+ *
353
+ * The minimum effective `maxLength` is 4 — a shorter cap is silently
354
+ * clamped to 4 so the result is always at least `'X...'` for some single
355
+ * character of the original message.
356
+ *
357
+ * Examples:
358
+ * ```
359
+ * truncateErrorMessage('hello world', 8) // => 'hello...'
360
+ * truncateErrorMessage('hi', 8) // => 'hi' (already short)
361
+ * truncateErrorMessage('hello', 3) // => 'h...' (clamp to 4)
362
+ * truncateErrorMessage('hello', 0) // => 'h...' (clamp to 4)
363
+ * ```
364
+ *
365
+ * @param message The message to truncate.
366
+ * @param maxLength Maximum length of the returned string. Values < 4 are
367
+ * clamped to 4. Default is 1024.
368
+ */
369
+ export function truncateErrorMessage(message, maxLength = 1024) {
370
+ const safeMax = Math.max(4, maxLength);
371
+ if (message.length <= safeMax)
372
+ return message;
373
+ // Slice by code units but step back if we land on a high surrogate to avoid
374
+ // emitting a lone surrogate that produces malformed UTF-16 / UTF-8 (§E4).
375
+ let cut = safeMax - 3;
376
+ const charCode = message.charCodeAt(cut - 1);
377
+ if (charCode >= 0xd800 && charCode <= 0xdbff)
378
+ cut -= 1;
379
+ return message.slice(0, cut) + '...';
380
+ }
381
+ /**
382
+ * Same classification logic as {@link classifyError}, but returns a
383
+ * {@link ClassifiedError} carrying the original message, HTTP status, and
384
+ * provider error code alongside the enum value. Useful when the caller
385
+ * wants to log a richer line ("Rate limit hit: ...message...") or
386
+ * propagate the original message to a UI surface.
387
+ *
388
+ * The retry path in `http-client.ts` does not currently consume this —
389
+ * its decision is purely "is this retryable?". This is exposed as a
390
+ * separate function so existing callers of `classifyError` continue to
391
+ * work unchanged.
392
+ */
393
+ export function classifyErrorDetailed(error, provider) {
394
+ const err = error;
395
+ const status = typeof err?.status === 'number' ? err.status : null;
396
+ // Use extractCode() to walk the cause chain, matching classifyError() (§E1/§E6).
397
+ const code = extractCode(error) ?? null;
398
+ const originalMessage = typeof err?.message === 'string' && err.message.length > 0 ? err.message : null;
399
+ return {
400
+ classification: classifyError(error, provider),
401
+ originalMessage,
402
+ status,
403
+ code,
404
+ };
405
+ }
406
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/shared/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import type { AiRequest, AiResponse, AiMessage, AiProvider, AiRequestMethod, AiMessageRole, AiAgentTaskSummary, AiAntiPattern, AntiPatternType, AiAgentMessage, AiContextReset } from './types.js';
2
+ /**
3
+ * Reset the warn-once set. Test-only — production code never resets.
4
+ * Exported behind a `__` prefix so it's clearly internal.
5
+ */
6
+ export declare function __resetEntityGuidWarning(): void;
7
+ export interface CreateAiRequestParams {
8
+ provider: AiProvider;
9
+ model: string;
10
+ requestMethod: AiRequestMethod;
11
+ maxTokens?: number | null;
12
+ temperature?: number | null;
13
+ topP?: number | null;
14
+ systemPromptLength?: number | null;
15
+ messageCount: number;
16
+ toolCount?: number;
17
+ toolNames?: string[];
18
+ thinkingEnabled?: boolean;
19
+ thinkingBudgetTokens?: number | null;
20
+ streamingEnabled: boolean;
21
+ appName: string;
22
+ entityGuid?: string | null;
23
+ customAttributes?: Record<string, string | number | boolean>;
24
+ id?: string;
25
+ timestamp?: number;
26
+ }
27
+ export declare function createAiRequest(params: CreateAiRequestParams): AiRequest;
28
+ export interface CreateAiResponseParams {
29
+ provider: AiProvider;
30
+ model: string;
31
+ durationMs: number;
32
+ timeToFirstTokenMs?: number | null;
33
+ inputTokens: number;
34
+ outputTokens: number;
35
+ thinkingTokens?: number;
36
+ cacheReadTokens?: number;
37
+ cacheCreationTokens?: number;
38
+ costInputUsd?: number | null;
39
+ costOutputUsd?: number | null;
40
+ costThinkingUsd?: number | null;
41
+ costCacheReadUsd?: number | null;
42
+ costCacheCreationUsd?: number | null;
43
+ costTotalUsd?: number | null;
44
+ stopReason?: string | null;
45
+ contentBlockTypes?: string[];
46
+ error?: {
47
+ type: string;
48
+ message: string;
49
+ statusCode: number | null;
50
+ } | null;
51
+ appName: string;
52
+ entityGuid?: string | null;
53
+ customAttributes?: Record<string, string | number | boolean>;
54
+ id?: string;
55
+ timestamp?: number;
56
+ }
57
+ export declare function createAiResponse(params: CreateAiResponseParams): AiResponse;
58
+ export interface CreateAiMessageParams {
59
+ role: AiMessageRole;
60
+ content: string;
61
+ contentLength: number;
62
+ sequence: number;
63
+ appName: string;
64
+ entityGuid?: string | null;
65
+ customAttributes?: Record<string, string | number | boolean>;
66
+ id?: string;
67
+ timestamp?: number;
68
+ }
69
+ export declare function createAiMessage(params: CreateAiMessageParams): AiMessage;
70
+ export interface CreateAiAgentTaskSummaryParams {
71
+ traceId: string;
72
+ spanId: string;
73
+ taskName: string;
74
+ durationMs: number;
75
+ totalLlmCalls: number;
76
+ totalToolCalls: number;
77
+ totalTokens: number;
78
+ totalCostUsd?: number | null;
79
+ stepCount: number;
80
+ success: boolean;
81
+ provider?: AiProvider;
82
+ delegationCount?: number;
83
+ spawnCount?: number;
84
+ delegationDepth?: number;
85
+ interAgentMessages?: number;
86
+ delegationOverheadMs?: number;
87
+ appName: string;
88
+ entityGuid?: string | null;
89
+ customAttributes?: Record<string, string | number | boolean>;
90
+ id?: string;
91
+ timestamp?: number;
92
+ }
93
+ export declare function createAiAgentTaskSummary(params: CreateAiAgentTaskSummaryParams): AiAgentTaskSummary;
94
+ export interface CreateAiAntiPatternParams {
95
+ traceId: string;
96
+ patternType: AntiPatternType;
97
+ severity: 'low' | 'medium' | 'high';
98
+ description: string;
99
+ provider?: AiProvider;
100
+ toolName?: string;
101
+ repeatCount?: number;
102
+ depthIndex?: number;
103
+ taskComplexity?: 'simple' | 'moderate' | 'complex';
104
+ contextPressure?: number | null;
105
+ tokenShare?: number | null;
106
+ attemptCount?: number;
107
+ appName: string;
108
+ entityGuid?: string | null;
109
+ customAttributes?: Record<string, string | number | boolean>;
110
+ id?: string;
111
+ timestamp?: number;
112
+ }
113
+ export declare function createAiAntiPattern(params: CreateAiAntiPatternParams): AiAntiPattern;
114
+ export interface CreateAiAgentMessageParams {
115
+ traceId: string;
116
+ fromAgent: string;
117
+ toAgent: string;
118
+ messageType: string;
119
+ provider?: AiProvider;
120
+ tokenCount?: number;
121
+ appName: string;
122
+ entityGuid?: string | null;
123
+ customAttributes?: Record<string, string | number | boolean>;
124
+ id?: string;
125
+ timestamp?: number;
126
+ }
127
+ export declare function createAiAgentMessage(params: CreateAiAgentMessageParams): AiAgentMessage;
128
+ export interface CreateAiContextResetParams {
129
+ traceId: string;
130
+ conversationId: string;
131
+ tokensBefore: number;
132
+ tokensAfter: number;
133
+ reason: 'summarization' | 'truncation' | 'sliding_window' | 'manual';
134
+ provider?: AiProvider;
135
+ turnsRemoved?: number;
136
+ appName: string;
137
+ entityGuid?: string | null;
138
+ customAttributes?: Record<string, string | number | boolean>;
139
+ id?: string;
140
+ timestamp?: number;
141
+ }
142
+ export declare function createAiContextReset(params: CreateAiContextResetParams): AiContextReset;
143
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/shared/events/factory.ts"],"names":[],"mappings":"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"}