@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,166 @@
1
+ import { redact } from './redact.js';
2
+ const LOG_LEVEL_ORDER = {
3
+ debug: 0,
4
+ info: 1,
5
+ warn: 2,
6
+ error: 3,
7
+ };
8
+ /**
9
+ * type-safe narrowing helper. The previous
10
+ * `envLevel in LOG_LEVEL_ORDER` check + `as LogLevel` cast was sound at
11
+ * runtime today but the cast hid the gap: TS can't narrow `string` to a
12
+ * literal union via `in`, so a refactor that broadened `LOG_LEVEL_ORDER`
13
+ * (e.g. added `trace`) would silently let `envLevel` flow through with
14
+ * the wrong type. Explicit type guard removes the cast and makes the
15
+ * literal-union membership check the single source of truth.
16
+ */
17
+ const LOG_LEVELS = ['debug', 'info', 'warn', 'error'];
18
+ function isLogLevel(value) {
19
+ return LOG_LEVELS.includes(value);
20
+ }
21
+ function resolveLogLevel() {
22
+ const envLevel = process.env.NEW_RELIC_AI_LOG_LEVEL?.toLowerCase();
23
+ if (envLevel !== undefined && isLogLevel(envLevel)) {
24
+ return envLevel;
25
+ }
26
+ return 'info';
27
+ }
28
+ /**
29
+ * Cached resolved log level.
30
+ *
31
+ * Pre-§7.5, every `createLogger()` call re-read `NEW_RELIC_AI_LOG_LEVEL`
32
+ * from the env. If a process changed the env between two calls — common
33
+ * in tests that flip it per-block — the two loggers ended up with
34
+ * different levels, producing flapping behavior that was hard to debug.
35
+ *
36
+ * Now: resolve once on first use and reuse the cached value. Production
37
+ * code is unaffected (the env is set once at startup); tests that need to
38
+ * exercise different levels at runtime call `__resetLogLevelCache()` after
39
+ * mutating the env, or pass an explicit `levelOverride` to `createLogger`.
40
+ */
41
+ let cachedMinLevel = null;
42
+ function getMinLevel() {
43
+ if (cachedMinLevel === null) {
44
+ cachedMinLevel = resolveLogLevel();
45
+ }
46
+ return cachedMinLevel;
47
+ }
48
+ /**
49
+ * Re-arm the env-resolved log level cache so the next `createLogger()`
50
+ * call reads `NEW_RELIC_AI_LOG_LEVEL` again.
51
+ *
52
+ * @internal Test-only. The double-underscore prefix signals that this is NOT
53
+ * part of the public API and MUST NOT be called in production code — calling it
54
+ * in a running agent would cause all loggers to re-read the log level env var
55
+ * on the next emit, defeating the intentional caching behaviour.
56
+ */
57
+ export function __resetLogLevelCache() {
58
+ cachedMinLevel = null;
59
+ }
60
+ /**
61
+ * Create a logger.
62
+ *
63
+ * @param component Identifier emitted as `component` on every log entry.
64
+ * Convention: kebab-case module name (e.g. `'harvest-scheduler'`).
65
+ * @param levelOverride
66
+ * Optional per-component minimum level. Pins this
67
+ * logger to the specified level for its lifetime, ignoring the
68
+ * process-wide `NEW_RELIC_AI_LOG_LEVEL` env var. Use this when one
69
+ * noisy module needs to be quieter (or louder) than the rest of the
70
+ * library — e.g.:
71
+ *
72
+ * const logger = createLogger('http-client', 'error');
73
+ *
74
+ * makes the http-client module emit only errors regardless of how the
75
+ * rest of the process is configured. Without an override, the level
76
+ * resolves from the env (cached, see 5) and tracks
77
+ * process-wide changes via `__resetLogLevelCache()`.
78
+ */
79
+ export function createLogger(component, levelOverride) {
80
+ return createLoggerInternal(component, levelOverride, undefined);
81
+ }
82
+ function createLoggerInternal(component, levelOverride, boundContext) {
83
+ // 5: when no override is supplied, the minimum level is
84
+ // resolved per-log-call via the cached `getMinLevel()` so a process-wide
85
+ // log-level change (env mutation + cache reset) takes effect immediately
86
+ // for already-constructed loggers — without a Map lookup penalty in the
87
+ // common case (cached read after first call). When `levelOverride` is
88
+ // explicit, it pins the level for this logger's lifetime.
89
+ const fixedLevelOrder = levelOverride !== undefined ? LOG_LEVEL_ORDER[levelOverride] : null;
90
+ function log(level, message, data) {
91
+ const minLevelOrder = fixedLevelOrder ?? LOG_LEVEL_ORDER[getMinLevel()];
92
+ if (LOG_LEVEL_ORDER[level] < minLevelOrder)
93
+ return;
94
+ // §7.2: defensively redact secret-shaped keys from caller-supplied `data`
95
+ // before merging into the log entry. Callers occasionally pass through
96
+ // config objects (`{ ...config }`) or response payloads that contain
97
+ // licenseKey / authorization headers; without this guard those fields
98
+ // would land in stderr verbatim.
99
+ const safeData = data === undefined ? undefined : redact(data);
100
+ const now = new Date();
101
+ const entry = {
102
+ // §7.6: bound context first, per-call data wins on key collision.
103
+ // Canonical fields come last so callers cannot accidentally overwrite
104
+ // level, message, component, timestamp, or epoch_ms.
105
+ ...(boundContext ?? {}),
106
+ ...safeData,
107
+ timestamp: now.toISOString(),
108
+ // §7.7: epoch_ms alongside ISO timestamp for NR Logs API ingestion.
109
+ epoch_ms: now.getTime(),
110
+ level,
111
+ component,
112
+ message,
113
+ };
114
+ let serialized;
115
+ try {
116
+ serialized = JSON.stringify(entry);
117
+ }
118
+ catch {
119
+ // §7.3: per-field fallback. JSON.stringify on the whole entry threw,
120
+ // but most fields are probably fine — only one or two values are bad
121
+ // (e.g. a BigInt buried in caller data). Walk top-level keys and
122
+ // replace ONLY the offending ones with '[unserializable]', so
123
+ // operator-useful siblings (timestamp, level, component, message,
124
+ // and any well-formed data fields) still surface. `data` is spread
125
+ // into entry via `...safeData` above, so its keys are already
126
+ // top-level here.
127
+ // NOTE (§LG1): this walk operates on top-level entry keys only. If a
128
+ // data field is a nested object containing an unserializable value
129
+ // (e.g. `data = { outer: { amount: 1n } }`), the entire `outer` key is
130
+ // replaced with '[unserializable]' — not just the `amount` sub-key.
131
+ // Per-field precision applies only at depth 1 (the entry level).
132
+ const safeEntry = {};
133
+ for (const [k, v] of Object.entries(entry)) {
134
+ try {
135
+ JSON.stringify(v);
136
+ safeEntry[k] = v;
137
+ }
138
+ catch {
139
+ safeEntry[k] = '[unserializable]';
140
+ }
141
+ }
142
+ serialized = JSON.stringify(safeEntry);
143
+ }
144
+ // §7.4: prefer console.error over a raw process.stderr.write. Both go to
145
+ // the same underlying stream, but console.error uses Node's Console
146
+ // implementation which handles formatting and any future buffering
147
+ // changes — and it keeps log output cooperative with consumer code that
148
+ // intercepts console.* (Jest, debugger UIs, log forwarders).
149
+ console.error(serialized);
150
+ }
151
+ return {
152
+ debug: (message, data) => log('debug', message, data),
153
+ info: (message, data) => log('info', message, data),
154
+ warn: (message, data) => log('warn', message, data),
155
+ error: (message, data) => log('error', message, data),
156
+ child: (context) => createLoggerInternal(component, levelOverride, {
157
+ ...(boundContext ?? {}),
158
+ // Redacting at child-creation time avoids re-running redact() on the
159
+ // bound context per log call (§LG2). Note: per-call data is still
160
+ // redacted on every emit (line 141) — only bound context gets the
161
+ // creation-time optimization.
162
+ ...redact(context),
163
+ }),
164
+ };
165
+ }
166
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ModelPricing } from './pricing.js';
2
+ export declare const MODEL_ALIASES: Record<string, string>;
3
+ export declare const DEFAULT_PRICING_TABLE: Record<string, ModelPricing>;
4
+ //# sourceMappingURL=pricing-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing-data.d.ts","sourceRoot":"","sources":["../../src/shared/pricing-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAejD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoBhD,CAAC;AAmBF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAib9D,CAAC"}
@@ -0,0 +1,473 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Family-name aliases → current-generation key
3
+ //
4
+ // When a caller passes a family name (e.g. "claude-opus-4"), they almost
5
+ // always mean "the current generation of that family". Without an explicit
6
+ // alias, the prefix-match heuristic in resolveModelPricing() prefers longer
7
+ // keys (dated suffixes like "-20250514") and silently returns LEGACY pricing,
8
+ // e.g. claude-opus-4 → claude-opus-4-20250514 ($15/$75) instead of the
9
+ // current claude-opus-4-7 ($5/$25). That's a 3× cost overestimate.
10
+ //
11
+ // Resolution order in resolveModelPricing(): exact → alias → forward-prefix
12
+ // → reverse-prefix → null.
13
+ // ---------------------------------------------------------------------------
14
+ export const MODEL_ALIASES = {
15
+ // Anthropic Claude families
16
+ 'claude-opus-4': 'claude-opus-4-7',
17
+ 'claude-sonnet-4': 'claude-sonnet-4-6',
18
+ 'claude-haiku-4': 'claude-haiku-4-5',
19
+ 'claude-haiku-3-5': 'claude-haiku-3-5-20241022',
20
+ // Google Gemini current-gen shortcuts
21
+ 'gemini-3.1-pro': 'gemini-3.1-pro-preview',
22
+ 'gemini-3.1-flash-lite': 'gemini-3.1-flash-lite-preview',
23
+ 'gemini-3-flash': 'gemini-3-flash-preview',
24
+ // Gemini family shortcuts (§PD4): without these, bare family queries like
25
+ // 'gemini-2.5' return null (gpt-style .x suffixes don't match -\d prefix
26
+ // heuristic) or non-deterministically pick between pro/flash.
27
+ 'gemini-2.5': 'gemini-2.5-pro',
28
+ 'gemini-2.0': 'gemini-2.0-flash',
29
+ // OpenAI family shortcuts (§PD4): 'gpt-5' has no exact key and the .x
30
+ // suffix prevents the forward-prefix heuristic from matching.
31
+ 'gpt-5': 'gpt-5.5',
32
+ };
33
+ // ---------------------------------------------------------------------------
34
+ // Built-in pricing table — USD per million tokens
35
+ //
36
+ // Rates last verified against vendor public pricing pages on 2026-05-20:
37
+ // - Anthropic https://www.anthropic.com/pricing
38
+ // - Google https://cloud.google.com/vertex-ai/generative-ai/pricing
39
+ // - OpenAI https://openai.com/api/pricing/
40
+ // - Cohere https://cohere.com/pricing
41
+ // - Mistral https://mistral.ai/pricing
42
+ // - Bedrock https://aws.amazon.com/bedrock/pricing/
43
+ //
44
+ // When updating rates, bump the date above so consumers can tell at a glance
45
+ // how stale the built-in table is. Pricing changes on these pages are usually
46
+ // announced; the date is the verification timestamp, not a guarantee that
47
+ // the rate hasn't shifted since.
48
+ // ---------------------------------------------------------------------------
49
+ export const DEFAULT_PRICING_TABLE = {
50
+ // ---- Anthropic (current generation) ----
51
+ 'claude-opus-4-7': {
52
+ inputPerMTok: 5,
53
+ outputPerMTok: 25,
54
+ thinkingPerMTok: 25,
55
+ cacheReadPerMTok: 0.5,
56
+ cacheCreationPerMTok: 6.25,
57
+ contextWindow: 1_000_000,
58
+ },
59
+ 'claude-sonnet-4-6': {
60
+ inputPerMTok: 3,
61
+ outputPerMTok: 15,
62
+ thinkingPerMTok: 15,
63
+ cacheReadPerMTok: 0.3,
64
+ cacheCreationPerMTok: 3.75,
65
+ contextWindow: 1_000_000,
66
+ },
67
+ // Dateless current-gen entry — MODEL_ALIASES['claude-haiku-4'] routes here.
68
+ // Matches the opus/sonnet convention: alias → dateless key → dated legacy key.
69
+ // Update this entry when Haiku 4.x rates change; the dated entry below is
70
+ // retained only for historical-cost backfill (§PD3).
71
+ 'claude-haiku-4-5': {
72
+ inputPerMTok: 1,
73
+ outputPerMTok: 5,
74
+ thinkingPerMTok: 5,
75
+ cacheReadPerMTok: 0.1,
76
+ cacheCreationPerMTok: 1.25,
77
+ contextWindow: 200_000,
78
+ },
79
+ 'claude-haiku-4-5-20251001': {
80
+ inputPerMTok: 1,
81
+ outputPerMTok: 5,
82
+ thinkingPerMTok: 5,
83
+ cacheReadPerMTok: 0.1,
84
+ cacheCreationPerMTok: 1.25,
85
+ contextWindow: 200_000,
86
+ },
87
+ // ---- Anthropic (legacy Claude 4 generation) ----
88
+ // these legacy entries share input/output/cache rates
89
+ // with their current-generation counterparts, but `contextWindow` differs
90
+ // (200K legacy vs 1M current). They are NOT alias candidates: the cost
91
+ // calculations downstream don't use contextWindow, but downstream tooling
92
+ // (e.g. context-fit checks, dashboard filters by window size) does. Keep
93
+ // the entries explicit. Family-name routing (e.g. `claude-opus-4` →
94
+ // current generation) is handled by MODEL_ALIASES above.
95
+ 'claude-opus-4-6': {
96
+ inputPerMTok: 5,
97
+ outputPerMTok: 25,
98
+ thinkingPerMTok: 25,
99
+ cacheReadPerMTok: 0.5,
100
+ cacheCreationPerMTok: 6.25,
101
+ contextWindow: 200_000,
102
+ },
103
+ 'claude-sonnet-4-5': {
104
+ inputPerMTok: 3,
105
+ outputPerMTok: 15,
106
+ thinkingPerMTok: 15,
107
+ cacheReadPerMTok: 0.3,
108
+ cacheCreationPerMTok: 3.75,
109
+ contextWindow: 200_000,
110
+ },
111
+ 'claude-opus-4-5': {
112
+ inputPerMTok: 5,
113
+ outputPerMTok: 25,
114
+ thinkingPerMTok: 25,
115
+ cacheReadPerMTok: 0.5,
116
+ cacheCreationPerMTok: 6.25,
117
+ contextWindow: 200_000,
118
+ },
119
+ // WARNING: this key uses a version-number suffix (-1) not a date suffix.
120
+ // The reverse-prefix algorithm strips only 8-digit date suffixes, so a
121
+ // future model named 'claude-opus-4-10' (or 'claude-opus-4-100') would
122
+ // match this entry via reverse-prefix because
123
+ // 'claude-opus-4-10'.startsWith('claude-opus-4-1') is true (§PD5).
124
+ // If Anthropic releases a claude-opus-4-10 model, add an explicit alias
125
+ // before that model key appears in the table.
126
+ 'claude-opus-4-1': {
127
+ inputPerMTok: 15,
128
+ outputPerMTok: 75,
129
+ thinkingPerMTok: 75,
130
+ cacheReadPerMTok: 1.5,
131
+ cacheCreationPerMTok: 18.75,
132
+ contextWindow: 200_000,
133
+ },
134
+ 'claude-sonnet-4-20250514': {
135
+ inputPerMTok: 3,
136
+ outputPerMTok: 15,
137
+ thinkingPerMTok: 15,
138
+ cacheReadPerMTok: 0.3,
139
+ cacheCreationPerMTok: 3.75,
140
+ contextWindow: 200_000,
141
+ },
142
+ 'claude-opus-4-20250514': {
143
+ inputPerMTok: 15,
144
+ outputPerMTok: 75,
145
+ thinkingPerMTok: 75,
146
+ cacheReadPerMTok: 1.5,
147
+ cacheCreationPerMTok: 18.75,
148
+ contextWindow: 200_000,
149
+ },
150
+ 'claude-haiku-3-5-20241022': {
151
+ inputPerMTok: 0.8,
152
+ outputPerMTok: 4,
153
+ cacheReadPerMTok: 0.08,
154
+ cacheCreationPerMTok: 1,
155
+ contextWindow: 200_000,
156
+ },
157
+ // ---- Google Gemini (current generation) ----
158
+ 'gemini-3.1-pro-preview': {
159
+ inputPerMTok: 2,
160
+ outputPerMTok: 12,
161
+ thinkingPerMTok: 12,
162
+ contextWindow: 1_000_000,
163
+ tierThreshold: 200_000,
164
+ tierInputPerMTok: 4,
165
+ tierOutputPerMTok: 18,
166
+ tierThinkingPerMTok: 18,
167
+ },
168
+ 'gemini-3.1-flash-lite-preview': {
169
+ inputPerMTok: 0.25,
170
+ outputPerMTok: 1.5,
171
+ contextWindow: 1_000_000,
172
+ },
173
+ 'gemini-3-flash-preview': {
174
+ inputPerMTok: 0.5,
175
+ outputPerMTok: 3,
176
+ contextWindow: 1_000_000,
177
+ },
178
+ // ---- Google Gemini 2.5 ----
179
+ 'gemini-2.5-pro': {
180
+ inputPerMTok: 1.25,
181
+ outputPerMTok: 10,
182
+ thinkingPerMTok: 10,
183
+ contextWindow: 1_000_000,
184
+ tierThreshold: 200_000,
185
+ tierInputPerMTok: 2.5,
186
+ tierOutputPerMTok: 15,
187
+ tierThinkingPerMTok: 15,
188
+ },
189
+ 'gemini-2.5-flash': {
190
+ inputPerMTok: 0.3,
191
+ outputPerMTok: 2.5,
192
+ thinkingPerMTok: 2.5,
193
+ contextWindow: 1_000_000,
194
+ },
195
+ 'gemini-2.5-flash-lite': {
196
+ inputPerMTok: 0.1,
197
+ outputPerMTok: 0.4,
198
+ contextWindow: 1_000_000,
199
+ },
200
+ // ---- Google Gemini 2.0 ----
201
+ // Retained past Google's published 2026-06-01 deprecation date for
202
+ // historical-cost backfill: events recorded against `gemini-2.0-flash`
203
+ // before the cutover may still flow through the harvest scheduler from
204
+ // long-running consumer apps that haven't migrated yet, and we'd rather
205
+ // they get a correct cost figure than fall through to the unknown-model
206
+ // zero rate. Rate values are the last published Google pricing as of
207
+ // that date and will be removed in a future release after the migration
208
+ // window closes.
209
+ 'gemini-2.0-flash': {
210
+ inputPerMTok: 0.1,
211
+ outputPerMTok: 0.4,
212
+ contextWindow: 1_000_000,
213
+ },
214
+ // ---- Google Gemini 1.5 (legacy) ----
215
+ 'gemini-1.5-pro': {
216
+ inputPerMTok: 1.25,
217
+ outputPerMTok: 5,
218
+ contextWindow: 2_000_000,
219
+ tierThreshold: 128_000,
220
+ tierInputPerMTok: 2.5,
221
+ tierOutputPerMTok: 10,
222
+ },
223
+ 'gemini-1.5-flash': {
224
+ inputPerMTok: 0.075,
225
+ outputPerMTok: 0.3,
226
+ contextWindow: 1_000_000,
227
+ tierThreshold: 128_000,
228
+ tierInputPerMTok: 0.15,
229
+ tierOutputPerMTok: 0.6,
230
+ },
231
+ // ---- OpenAI (current generation) ----
232
+ 'gpt-5.5': {
233
+ inputPerMTok: 5,
234
+ outputPerMTok: 30,
235
+ cacheReadPerMTok: 0.5,
236
+ contextWindow: 1_000_000,
237
+ // OpenAI long-context pricing is marginal: only tokens above 270k are
238
+ // billed at the tier rate — not the entire request (§PD2).
239
+ tierThreshold: 270_000,
240
+ tierMode: 'marginal',
241
+ tierInputPerMTok: 10,
242
+ tierOutputPerMTok: 45,
243
+ },
244
+ 'gpt-5.4': {
245
+ inputPerMTok: 2.5,
246
+ outputPerMTok: 15,
247
+ cacheReadPerMTok: 0.25,
248
+ contextWindow: 1_000_000,
249
+ tierThreshold: 270_000,
250
+ tierMode: 'marginal',
251
+ tierInputPerMTok: 5,
252
+ tierOutputPerMTok: 22.5,
253
+ },
254
+ 'gpt-5.4-mini': {
255
+ inputPerMTok: 0.75,
256
+ outputPerMTok: 4.5,
257
+ cacheReadPerMTok: 0.075,
258
+ contextWindow: 128_000,
259
+ },
260
+ 'gpt-5.4-nano': {
261
+ inputPerMTok: 0.2,
262
+ outputPerMTok: 1.25,
263
+ cacheReadPerMTok: 0.02,
264
+ contextWindow: 128_000,
265
+ },
266
+ // ---- OpenAI (legacy) ----
267
+ 'gpt-4o': {
268
+ inputPerMTok: 2.5,
269
+ outputPerMTok: 10,
270
+ contextWindow: 128_000,
271
+ },
272
+ 'gpt-4o-mini': {
273
+ inputPerMTok: 0.15,
274
+ outputPerMTok: 0.6,
275
+ contextWindow: 128_000,
276
+ },
277
+ 'gpt-4o-2024-11-20': {
278
+ inputPerMTok: 2.5,
279
+ outputPerMTok: 10,
280
+ contextWindow: 128_000,
281
+ },
282
+ 'gpt-4o-2024-08-06': {
283
+ inputPerMTok: 2.5,
284
+ outputPerMTok: 10,
285
+ contextWindow: 128_000,
286
+ },
287
+ 'gpt-4o-mini-2024-07-18': {
288
+ inputPerMTok: 0.15,
289
+ outputPerMTok: 0.6,
290
+ contextWindow: 128_000,
291
+ },
292
+ o1: {
293
+ inputPerMTok: 15,
294
+ outputPerMTok: 60,
295
+ // No thinkingPerMTok: OpenAI bills reasoning tokens as part of
296
+ // completion_tokens at outputPerMTok. The extractor sets thinkingTokens
297
+ // from completion_tokens_details.reasoning_tokens as an informational
298
+ // breakdown, but those tokens are already counted in outputTokens, so
299
+ // a separate thinkingPerMTok rate would double-bill (§PD1).
300
+ contextWindow: 200_000,
301
+ },
302
+ 'o1-mini': {
303
+ inputPerMTok: 1.1,
304
+ outputPerMTok: 4.4,
305
+ contextWindow: 128_000,
306
+ },
307
+ 'o1-preview': {
308
+ inputPerMTok: 15,
309
+ outputPerMTok: 60,
310
+ contextWindow: 128_000,
311
+ },
312
+ o3: {
313
+ inputPerMTok: 10,
314
+ outputPerMTok: 40,
315
+ // No thinkingPerMTok — see 'o1' comment above (§PD1).
316
+ contextWindow: 200_000,
317
+ },
318
+ 'o3-mini': {
319
+ inputPerMTok: 1.1,
320
+ outputPerMTok: 4.4,
321
+ contextWindow: 200_000,
322
+ },
323
+ 'o4-mini': {
324
+ inputPerMTok: 1.1,
325
+ outputPerMTok: 4.4,
326
+ contextWindow: 200_000,
327
+ },
328
+ 'gpt-4-turbo': {
329
+ inputPerMTok: 10,
330
+ outputPerMTok: 30,
331
+ contextWindow: 128_000,
332
+ },
333
+ 'gpt-3.5-turbo': {
334
+ inputPerMTok: 0.5,
335
+ outputPerMTok: 1.5,
336
+ contextWindow: 16_385,
337
+ },
338
+ // ---- AWS Bedrock (Converse API pricing for on-demand) ----
339
+ // Current Claude generation via Bedrock
340
+ // NOTE (§PR2): cache pricing for claude-opus-4-7 and claude-sonnet-4-6 on
341
+ // Bedrock has not been publicly documented as of 2026-06-03. Rates below are
342
+ // omitted until verified against the AWS Bedrock pricing page.
343
+ 'anthropic.claude-opus-4-7': {
344
+ inputPerMTok: 5,
345
+ outputPerMTok: 25,
346
+ contextWindow: 1_000_000,
347
+ },
348
+ 'anthropic.claude-sonnet-4-6': {
349
+ inputPerMTok: 3,
350
+ outputPerMTok: 15,
351
+ contextWindow: 1_000_000,
352
+ },
353
+ 'anthropic.claude-haiku-4-5-20251001-v1:0': {
354
+ inputPerMTok: 1,
355
+ outputPerMTok: 5,
356
+ contextWindow: 200_000,
357
+ },
358
+ // Legacy Claude models via Bedrock cross-region inference
359
+ // Cache rates verified against AWS Bedrock pricing page (2026-06-03) (§PR2).
360
+ 'anthropic.claude-3-5-sonnet-20241022-v2:0': {
361
+ inputPerMTok: 3,
362
+ outputPerMTok: 15,
363
+ cacheReadPerMTok: 0.6,
364
+ cacheCreationPerMTok: 7.5,
365
+ contextWindow: 200_000,
366
+ },
367
+ 'anthropic.claude-3-5-haiku-20241022-v1:0': {
368
+ inputPerMTok: 0.8,
369
+ outputPerMTok: 4,
370
+ contextWindow: 200_000,
371
+ },
372
+ 'anthropic.claude-3-opus-20240229-v1:0': {
373
+ inputPerMTok: 15,
374
+ outputPerMTok: 75,
375
+ contextWindow: 200_000,
376
+ },
377
+ // Meta Llama via Bedrock
378
+ 'meta.llama3-70b-instruct-v1:0': {
379
+ inputPerMTok: 0.99,
380
+ outputPerMTok: 0.99,
381
+ contextWindow: 128_000,
382
+ },
383
+ 'meta.llama3-8b-instruct-v1:0': {
384
+ inputPerMTok: 0.3,
385
+ outputPerMTok: 0.6,
386
+ contextWindow: 128_000,
387
+ },
388
+ // Mistral via Bedrock
389
+ 'mistral.mistral-large-2402-v1:0': {
390
+ inputPerMTok: 4,
391
+ outputPerMTok: 12,
392
+ contextWindow: 32_000,
393
+ },
394
+ 'mistral.mistral-small-2402-v1:0': {
395
+ inputPerMTok: 1,
396
+ outputPerMTok: 3,
397
+ contextWindow: 32_000,
398
+ },
399
+ // Amazon Nova
400
+ 'amazon.nova-pro-v1:0': {
401
+ inputPerMTok: 0.8,
402
+ outputPerMTok: 3.2,
403
+ contextWindow: 300_000,
404
+ },
405
+ 'amazon.nova-lite-v1:0': {
406
+ inputPerMTok: 0.06,
407
+ outputPerMTok: 0.24,
408
+ contextWindow: 300_000,
409
+ },
410
+ 'amazon.nova-micro-v1:0': {
411
+ inputPerMTok: 0.035,
412
+ outputPerMTok: 0.14,
413
+ contextWindow: 128_000,
414
+ },
415
+ // ---- Mistral ----
416
+ 'mistral-large-latest': {
417
+ inputPerMTok: 2,
418
+ outputPerMTok: 6,
419
+ contextWindow: 131_072,
420
+ },
421
+ 'mistral-small-latest': {
422
+ inputPerMTok: 0.1,
423
+ outputPerMTok: 0.3,
424
+ contextWindow: 131_072,
425
+ },
426
+ 'mistral-nemo': {
427
+ inputPerMTok: 0.15,
428
+ outputPerMTok: 0.15,
429
+ contextWindow: 131_072,
430
+ },
431
+ // ---- Mistral (legacy — deprecated March 2025) ----
432
+ 'open-mistral-7b': {
433
+ inputPerMTok: 0.25,
434
+ outputPerMTok: 0.25,
435
+ contextWindow: 32_000,
436
+ },
437
+ 'open-mixtral-8x7b': {
438
+ inputPerMTok: 0.7,
439
+ outputPerMTok: 0.7,
440
+ contextWindow: 32_000,
441
+ },
442
+ 'codestral-latest': {
443
+ inputPerMTok: 0.2,
444
+ outputPerMTok: 0.6,
445
+ contextWindow: 256_000,
446
+ },
447
+ // ---- Cohere ----
448
+ 'command-r-plus': {
449
+ inputPerMTok: 2.5,
450
+ outputPerMTok: 10,
451
+ contextWindow: 128_000,
452
+ },
453
+ 'command-r': {
454
+ inputPerMTok: 0.15,
455
+ outputPerMTok: 0.6,
456
+ contextWindow: 128_000,
457
+ },
458
+ // `command` and `command-light` are deprecated (2024)
459
+ // but retained for historical-cost backfill of consumer apps that haven't
460
+ // migrated. Context window is 4096 tokens, not 4000 — the round-number
461
+ // approximation in the original entry was off by 96 tokens.
462
+ command: {
463
+ inputPerMTok: 1,
464
+ outputPerMTok: 2,
465
+ contextWindow: 4_096,
466
+ },
467
+ 'command-light': {
468
+ inputPerMTok: 0.3,
469
+ outputPerMTok: 0.6,
470
+ contextWindow: 4_096,
471
+ },
472
+ };
473
+ //# sourceMappingURL=pricing-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing-data.js","sourceRoot":"","sources":["../../src/shared/pricing-data.ts"],"names":[],"mappings":"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"}