@newrelic/preflight 0.0.1-pre.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (578) hide show
  1. package/LICENSE +183 -0
  2. package/README.md +498 -0
  3. package/dist/alerts/alert-log.d.ts +24 -0
  4. package/dist/alerts/alert-log.d.ts.map +1 -0
  5. package/dist/alerts/alert-log.js +159 -0
  6. package/dist/alerts/alert-log.js.map +1 -0
  7. package/dist/alerts/alert-snapshot-collector.d.ts +168 -0
  8. package/dist/alerts/alert-snapshot-collector.d.ts.map +1 -0
  9. package/dist/alerts/alert-snapshot-collector.js +243 -0
  10. package/dist/alerts/alert-snapshot-collector.js.map +1 -0
  11. package/dist/alerts/local-alert-engine.d.ts +86 -0
  12. package/dist/alerts/local-alert-engine.d.ts.map +1 -0
  13. package/dist/alerts/local-alert-engine.js +466 -0
  14. package/dist/alerts/local-alert-engine.js.map +1 -0
  15. package/dist/alerts/local-alert-rule.d.ts +439 -0
  16. package/dist/alerts/local-alert-rule.d.ts.map +1 -0
  17. package/dist/alerts/local-alert-rule.js +139 -0
  18. package/dist/alerts/local-alert-rule.js.map +1 -0
  19. package/dist/alerts/os-notifier.d.ts +39 -0
  20. package/dist/alerts/os-notifier.d.ts.map +1 -0
  21. package/dist/alerts/os-notifier.js +170 -0
  22. package/dist/alerts/os-notifier.js.map +1 -0
  23. package/dist/alerts/types.d.ts +35 -0
  24. package/dist/alerts/types.d.ts.map +1 -0
  25. package/dist/alerts/types.js +8 -0
  26. package/dist/alerts/types.js.map +1 -0
  27. package/dist/config.d.ts +169 -0
  28. package/dist/config.d.ts.map +1 -0
  29. package/dist/config.js +868 -0
  30. package/dist/config.js.map +1 -0
  31. package/dist/dashboard/dashboard-server.d.ts +38 -0
  32. package/dist/dashboard/dashboard-server.d.ts.map +1 -0
  33. package/dist/dashboard/dashboard-server.js +207 -0
  34. package/dist/dashboard/dashboard-server.js.map +1 -0
  35. package/dist/dashboard/index.d.ts +3 -0
  36. package/dist/dashboard/index.d.ts.map +1 -0
  37. package/dist/dashboard/index.js +2 -0
  38. package/dist/dashboard/index.js.map +1 -0
  39. package/dist/dashboard/live-event-bus.d.ts +99 -0
  40. package/dist/dashboard/live-event-bus.d.ts.map +1 -0
  41. package/dist/dashboard/live-event-bus.js +56 -0
  42. package/dist/dashboard/live-event-bus.js.map +1 -0
  43. package/dist/dashboard/routes/api-handler.d.ts +122 -0
  44. package/dist/dashboard/routes/api-handler.d.ts.map +1 -0
  45. package/dist/dashboard/routes/api-handler.js +1414 -0
  46. package/dist/dashboard/routes/api-handler.js.map +1 -0
  47. package/dist/dashboard/routes/replay-analyzer.d.ts +15 -0
  48. package/dist/dashboard/routes/replay-analyzer.d.ts.map +1 -0
  49. package/dist/dashboard/routes/replay-analyzer.js +227 -0
  50. package/dist/dashboard/routes/replay-analyzer.js.map +1 -0
  51. package/dist/dashboard/routes/sse-handler.d.ts +4 -0
  52. package/dist/dashboard/routes/sse-handler.d.ts.map +1 -0
  53. package/dist/dashboard/routes/sse-handler.js +122 -0
  54. package/dist/dashboard/routes/sse-handler.js.map +1 -0
  55. package/dist/dashboard/routes/static-handler.d.ts +3 -0
  56. package/dist/dashboard/routes/static-handler.d.ts.map +1 -0
  57. package/dist/dashboard/routes/static-handler.js +123 -0
  58. package/dist/dashboard/routes/static-handler.js.map +1 -0
  59. package/dist/data/alerts/conditions/01-daily-cost-spike.json +16 -0
  60. package/dist/data/alerts/conditions/02-low-efficiency-score.json +16 -0
  61. package/dist/data/alerts/conditions/03-stuck-loop-rate.json +16 -0
  62. package/dist/data/alerts/conditions/04-anti-pattern-rate.json +16 -0
  63. package/dist/data/alerts/conditions/05-session-cost-budget.json +16 -0
  64. package/dist/data/alerts/conditions-personal/01-personal-daily-cost.json +16 -0
  65. package/dist/data/alerts/conditions-personal/02-personal-session-cost.json +16 -0
  66. package/dist/data/alerts/conditions-personal/03-personal-low-efficiency.json +16 -0
  67. package/dist/data/alerts/conditions-personal/04-personal-anti-pattern-rate.json +16 -0
  68. package/dist/data/alerts/conditions-personal/05-personal-stuck-loop.json +16 -0
  69. package/dist/data/alerts/policy.json +4 -0
  70. package/dist/data/dashboards/ai-coding-assistant-manager-view.json +103 -0
  71. package/dist/data/dashboards/ai-coding-assistant-overview.json +239 -0
  72. package/dist/data/dashboards/ai-coding-assistant-personal.json +442 -0
  73. package/dist/data/dashboards/ai-coding-assistant-platform-comparison.json +320 -0
  74. package/dist/data/dashboards/ai-coding-assistant-security.json +275 -0
  75. package/dist/data/dashboards/ai-coding-assistant-session-detail.json +296 -0
  76. package/dist/data/dashboards/ai-coding-assistant-team-view.json +345 -0
  77. package/dist/deploy/data-paths.d.ts +22 -0
  78. package/dist/deploy/data-paths.d.ts.map +1 -0
  79. package/dist/deploy/data-paths.js +69 -0
  80. package/dist/deploy/data-paths.js.map +1 -0
  81. package/dist/deploy/deploy-alerts.d.ts +58 -0
  82. package/dist/deploy/deploy-alerts.d.ts.map +1 -0
  83. package/dist/deploy/deploy-alerts.js +371 -0
  84. package/dist/deploy/deploy-alerts.js.map +1 -0
  85. package/dist/deploy/deploy-dashboards.d.ts +92 -0
  86. package/dist/deploy/deploy-dashboards.d.ts.map +1 -0
  87. package/dist/deploy/deploy-dashboards.js +282 -0
  88. package/dist/deploy/deploy-dashboards.js.map +1 -0
  89. package/dist/digest/digest-formatter.d.ts +3 -0
  90. package/dist/digest/digest-formatter.d.ts.map +1 -0
  91. package/dist/digest/digest-formatter.js +37 -0
  92. package/dist/digest/digest-formatter.js.map +1 -0
  93. package/dist/digest/digest-sender.d.ts +2 -0
  94. package/dist/digest/digest-sender.d.ts.map +1 -0
  95. package/dist/digest/digest-sender.js +29 -0
  96. package/dist/digest/digest-sender.js.map +1 -0
  97. package/dist/hooks/bash-classifier.d.ts +26 -0
  98. package/dist/hooks/bash-classifier.d.ts.map +1 -0
  99. package/dist/hooks/bash-classifier.js +409 -0
  100. package/dist/hooks/bash-classifier.js.map +1 -0
  101. package/dist/hooks/collector-script.d.ts +47 -0
  102. package/dist/hooks/collector-script.d.ts.map +1 -0
  103. package/dist/hooks/collector-script.js +662 -0
  104. package/dist/hooks/collector-script.js.map +1 -0
  105. package/dist/hooks/event-processor.d.ts +65 -0
  106. package/dist/hooks/event-processor.d.ts.map +1 -0
  107. package/dist/hooks/event-processor.js +342 -0
  108. package/dist/hooks/event-processor.js.map +1 -0
  109. package/dist/hooks/index.d.ts +7 -0
  110. package/dist/hooks/index.d.ts.map +1 -0
  111. package/dist/hooks/index.js +5 -0
  112. package/dist/hooks/index.js.map +1 -0
  113. package/dist/hooks/session-resolver.d.ts +66 -0
  114. package/dist/hooks/session-resolver.d.ts.map +1 -0
  115. package/dist/hooks/session-resolver.js +196 -0
  116. package/dist/hooks/session-resolver.js.map +1 -0
  117. package/dist/hooks/tool-parsers.d.ts +19 -0
  118. package/dist/hooks/tool-parsers.d.ts.map +1 -0
  119. package/dist/hooks/tool-parsers.js +260 -0
  120. package/dist/hooks/tool-parsers.js.map +1 -0
  121. package/dist/index.d.ts +107 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +1505 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/install/cli.d.ts +11 -0
  126. package/dist/install/cli.d.ts.map +1 -0
  127. package/dist/install/cli.js +365 -0
  128. package/dist/install/cli.js.map +1 -0
  129. package/dist/install/index.d.ts +4 -0
  130. package/dist/install/index.d.ts.map +1 -0
  131. package/dist/install/index.js +3 -0
  132. package/dist/install/index.js.map +1 -0
  133. package/dist/install/install-helper.d.ts +35 -0
  134. package/dist/install/install-helper.d.ts.map +1 -0
  135. package/dist/install/install-helper.js +227 -0
  136. package/dist/install/install-helper.js.map +1 -0
  137. package/dist/install/key-validator.d.ts +19 -0
  138. package/dist/install/key-validator.d.ts.map +1 -0
  139. package/dist/install/key-validator.js +122 -0
  140. package/dist/install/key-validator.js.map +1 -0
  141. package/dist/install/migrate.d.ts +12 -0
  142. package/dist/install/migrate.d.ts.map +1 -0
  143. package/dist/install/migrate.js +115 -0
  144. package/dist/install/migrate.js.map +1 -0
  145. package/dist/install/schedule.d.ts +11 -0
  146. package/dist/install/schedule.d.ts.map +1 -0
  147. package/dist/install/schedule.js +114 -0
  148. package/dist/install/schedule.js.map +1 -0
  149. package/dist/install/setup-wizard.d.ts +40 -0
  150. package/dist/install/setup-wizard.d.ts.map +1 -0
  151. package/dist/install/setup-wizard.js +489 -0
  152. package/dist/install/setup-wizard.js.map +1 -0
  153. package/dist/lib/date.d.ts +54 -0
  154. package/dist/lib/date.d.ts.map +1 -0
  155. package/dist/lib/date.js +85 -0
  156. package/dist/lib/date.js.map +1 -0
  157. package/dist/metrics/anti-patterns.d.ts +62 -0
  158. package/dist/metrics/anti-patterns.d.ts.map +1 -0
  159. package/dist/metrics/anti-patterns.js +301 -0
  160. package/dist/metrics/anti-patterns.js.map +1 -0
  161. package/dist/metrics/api-failure-tracker.d.ts +82 -0
  162. package/dist/metrics/api-failure-tracker.d.ts.map +1 -0
  163. package/dist/metrics/api-failure-tracker.js +202 -0
  164. package/dist/metrics/api-failure-tracker.js.map +1 -0
  165. package/dist/metrics/budget-tracker.d.ts +60 -0
  166. package/dist/metrics/budget-tracker.d.ts.map +1 -0
  167. package/dist/metrics/budget-tracker.js +130 -0
  168. package/dist/metrics/budget-tracker.js.map +1 -0
  169. package/dist/metrics/claudemd-tracker.d.ts +108 -0
  170. package/dist/metrics/claudemd-tracker.d.ts.map +1 -0
  171. package/dist/metrics/claudemd-tracker.js +337 -0
  172. package/dist/metrics/claudemd-tracker.js.map +1 -0
  173. package/dist/metrics/collaboration-profile.d.ts +65 -0
  174. package/dist/metrics/collaboration-profile.d.ts.map +1 -0
  175. package/dist/metrics/collaboration-profile.js +231 -0
  176. package/dist/metrics/collaboration-profile.js.map +1 -0
  177. package/dist/metrics/context-composition-tracker.d.ts +74 -0
  178. package/dist/metrics/context-composition-tracker.d.ts.map +1 -0
  179. package/dist/metrics/context-composition-tracker.js +202 -0
  180. package/dist/metrics/context-composition-tracker.js.map +1 -0
  181. package/dist/metrics/context-tracker.d.ts +78 -0
  182. package/dist/metrics/context-tracker.d.ts.map +1 -0
  183. package/dist/metrics/context-tracker.js +222 -0
  184. package/dist/metrics/context-tracker.js.map +1 -0
  185. package/dist/metrics/context-window-tracker.d.ts +18 -0
  186. package/dist/metrics/context-window-tracker.d.ts.map +1 -0
  187. package/dist/metrics/context-window-tracker.js +35 -0
  188. package/dist/metrics/context-window-tracker.js.map +1 -0
  189. package/dist/metrics/cost-forecast.d.ts +36 -0
  190. package/dist/metrics/cost-forecast.d.ts.map +1 -0
  191. package/dist/metrics/cost-forecast.js +91 -0
  192. package/dist/metrics/cost-forecast.js.map +1 -0
  193. package/dist/metrics/cost-per-outcome.d.ts +102 -0
  194. package/dist/metrics/cost-per-outcome.d.ts.map +1 -0
  195. package/dist/metrics/cost-per-outcome.js +266 -0
  196. package/dist/metrics/cost-per-outcome.js.map +1 -0
  197. package/dist/metrics/cost-tracker.d.ts +78 -0
  198. package/dist/metrics/cost-tracker.d.ts.map +1 -0
  199. package/dist/metrics/cost-tracker.js +169 -0
  200. package/dist/metrics/cost-tracker.js.map +1 -0
  201. package/dist/metrics/decision-tracker.d.ts +49 -0
  202. package/dist/metrics/decision-tracker.d.ts.map +1 -0
  203. package/dist/metrics/decision-tracker.js +161 -0
  204. package/dist/metrics/decision-tracker.js.map +1 -0
  205. package/dist/metrics/efficiency-score.d.ts +80 -0
  206. package/dist/metrics/efficiency-score.d.ts.map +1 -0
  207. package/dist/metrics/efficiency-score.js +219 -0
  208. package/dist/metrics/efficiency-score.js.map +1 -0
  209. package/dist/metrics/git-efficiency-tracker.d.ts +165 -0
  210. package/dist/metrics/git-efficiency-tracker.d.ts.map +1 -0
  211. package/dist/metrics/git-efficiency-tracker.js +1056 -0
  212. package/dist/metrics/git-efficiency-tracker.js.map +1 -0
  213. package/dist/metrics/index.d.ts +26 -0
  214. package/dist/metrics/index.d.ts.map +1 -0
  215. package/dist/metrics/index.js +14 -0
  216. package/dist/metrics/index.js.map +1 -0
  217. package/dist/metrics/instruction-drift-tracker.d.ts +69 -0
  218. package/dist/metrics/instruction-drift-tracker.d.ts.map +1 -0
  219. package/dist/metrics/instruction-drift-tracker.js +213 -0
  220. package/dist/metrics/instruction-drift-tracker.js.map +1 -0
  221. package/dist/metrics/latency-decomposition.d.ts +50 -0
  222. package/dist/metrics/latency-decomposition.d.ts.map +1 -0
  223. package/dist/metrics/latency-decomposition.js +112 -0
  224. package/dist/metrics/latency-decomposition.js.map +1 -0
  225. package/dist/metrics/latency-tracker.d.ts +33 -0
  226. package/dist/metrics/latency-tracker.d.ts.map +1 -0
  227. package/dist/metrics/latency-tracker.js +93 -0
  228. package/dist/metrics/latency-tracker.js.map +1 -0
  229. package/dist/metrics/live-session-registry.d.ts +29 -0
  230. package/dist/metrics/live-session-registry.d.ts.map +1 -0
  231. package/dist/metrics/live-session-registry.js +103 -0
  232. package/dist/metrics/live-session-registry.js.map +1 -0
  233. package/dist/metrics/model-usage-tracker.d.ts +21 -0
  234. package/dist/metrics/model-usage-tracker.d.ts.map +1 -0
  235. package/dist/metrics/model-usage-tracker.js +53 -0
  236. package/dist/metrics/model-usage-tracker.js.map +1 -0
  237. package/dist/metrics/percentile.d.ts +5 -0
  238. package/dist/metrics/percentile.d.ts.map +1 -0
  239. package/dist/metrics/percentile.js +10 -0
  240. package/dist/metrics/percentile.js.map +1 -0
  241. package/dist/metrics/personal-coach.d.ts +47 -0
  242. package/dist/metrics/personal-coach.d.ts.map +1 -0
  243. package/dist/metrics/personal-coach.js +241 -0
  244. package/dist/metrics/personal-coach.js.map +1 -0
  245. package/dist/metrics/prompt-feedback.d.ts +75 -0
  246. package/dist/metrics/prompt-feedback.d.ts.map +1 -0
  247. package/dist/metrics/prompt-feedback.js +286 -0
  248. package/dist/metrics/prompt-feedback.js.map +1 -0
  249. package/dist/metrics/proxy-metrics.d.ts +54 -0
  250. package/dist/metrics/proxy-metrics.d.ts.map +1 -0
  251. package/dist/metrics/proxy-metrics.js +228 -0
  252. package/dist/metrics/proxy-metrics.js.map +1 -0
  253. package/dist/metrics/quality-proxy-tracker.d.ts +51 -0
  254. package/dist/metrics/quality-proxy-tracker.d.ts.map +1 -0
  255. package/dist/metrics/quality-proxy-tracker.js +162 -0
  256. package/dist/metrics/quality-proxy-tracker.js.map +1 -0
  257. package/dist/metrics/recommendation-engine.d.ts +72 -0
  258. package/dist/metrics/recommendation-engine.d.ts.map +1 -0
  259. package/dist/metrics/recommendation-engine.js +207 -0
  260. package/dist/metrics/recommendation-engine.js.map +1 -0
  261. package/dist/metrics/retry-detector.d.ts +43 -0
  262. package/dist/metrics/retry-detector.d.ts.map +1 -0
  263. package/dist/metrics/retry-detector.js +179 -0
  264. package/dist/metrics/retry-detector.js.map +1 -0
  265. package/dist/metrics/session-tracker.d.ts +75 -0
  266. package/dist/metrics/session-tracker.d.ts.map +1 -0
  267. package/dist/metrics/session-tracker.js +249 -0
  268. package/dist/metrics/session-tracker.js.map +1 -0
  269. package/dist/metrics/task-completion-tracker.d.ts +15 -0
  270. package/dist/metrics/task-completion-tracker.d.ts.map +1 -0
  271. package/dist/metrics/task-completion-tracker.js +27 -0
  272. package/dist/metrics/task-completion-tracker.js.map +1 -0
  273. package/dist/metrics/task-detector.d.ts +84 -0
  274. package/dist/metrics/task-detector.d.ts.map +1 -0
  275. package/dist/metrics/task-detector.js +302 -0
  276. package/dist/metrics/task-detector.js.map +1 -0
  277. package/dist/metrics/tool-selection-scorer.d.ts +39 -0
  278. package/dist/metrics/tool-selection-scorer.d.ts.map +1 -0
  279. package/dist/metrics/tool-selection-scorer.js +193 -0
  280. package/dist/metrics/tool-selection-scorer.js.map +1 -0
  281. package/dist/metrics/trend-analyzer.d.ts +92 -0
  282. package/dist/metrics/trend-analyzer.d.ts.map +1 -0
  283. package/dist/metrics/trend-analyzer.js +293 -0
  284. package/dist/metrics/trend-analyzer.js.map +1 -0
  285. package/dist/metrics/turn-cost-attributor.d.ts +41 -0
  286. package/dist/metrics/turn-cost-attributor.d.ts.map +1 -0
  287. package/dist/metrics/turn-cost-attributor.js +118 -0
  288. package/dist/metrics/turn-cost-attributor.js.map +1 -0
  289. package/dist/metrics/turn-tracker.d.ts +49 -0
  290. package/dist/metrics/turn-tracker.d.ts.map +1 -0
  291. package/dist/metrics/turn-tracker.js +192 -0
  292. package/dist/metrics/turn-tracker.js.map +1 -0
  293. package/dist/platforms/amazon-q-adapter.d.ts +10 -0
  294. package/dist/platforms/amazon-q-adapter.d.ts.map +1 -0
  295. package/dist/platforms/amazon-q-adapter.js +75 -0
  296. package/dist/platforms/amazon-q-adapter.js.map +1 -0
  297. package/dist/platforms/claude-code-adapter.d.ts +10 -0
  298. package/dist/platforms/claude-code-adapter.d.ts.map +1 -0
  299. package/dist/platforms/claude-code-adapter.js +48 -0
  300. package/dist/platforms/claude-code-adapter.js.map +1 -0
  301. package/dist/platforms/continue-adapter.d.ts +10 -0
  302. package/dist/platforms/continue-adapter.d.ts.map +1 -0
  303. package/dist/platforms/continue-adapter.js +73 -0
  304. package/dist/platforms/continue-adapter.js.map +1 -0
  305. package/dist/platforms/copilot-adapter.d.ts +37 -0
  306. package/dist/platforms/copilot-adapter.d.ts.map +1 -0
  307. package/dist/platforms/copilot-adapter.js +66 -0
  308. package/dist/platforms/copilot-adapter.js.map +1 -0
  309. package/dist/platforms/cursor-adapter.d.ts +10 -0
  310. package/dist/platforms/cursor-adapter.d.ts.map +1 -0
  311. package/dist/platforms/cursor-adapter.js +60 -0
  312. package/dist/platforms/cursor-adapter.js.map +1 -0
  313. package/dist/platforms/generic-mcp-adapter.d.ts +113 -0
  314. package/dist/platforms/generic-mcp-adapter.d.ts.map +1 -0
  315. package/dist/platforms/generic-mcp-adapter.js +139 -0
  316. package/dist/platforms/generic-mcp-adapter.js.map +1 -0
  317. package/dist/platforms/index.d.ts +15 -0
  318. package/dist/platforms/index.d.ts.map +1 -0
  319. package/dist/platforms/index.js +12 -0
  320. package/dist/platforms/index.js.map +1 -0
  321. package/dist/platforms/platform-registry.d.ts +11 -0
  322. package/dist/platforms/platform-registry.d.ts.map +1 -0
  323. package/dist/platforms/platform-registry.js +54 -0
  324. package/dist/platforms/platform-registry.js.map +1 -0
  325. package/dist/platforms/types.d.ts +36 -0
  326. package/dist/platforms/types.d.ts.map +1 -0
  327. package/dist/platforms/types.js +2 -0
  328. package/dist/platforms/types.js.map +1 -0
  329. package/dist/platforms/windsurf-adapter.d.ts +10 -0
  330. package/dist/platforms/windsurf-adapter.d.ts.map +1 -0
  331. package/dist/platforms/windsurf-adapter.js +63 -0
  332. package/dist/platforms/windsurf-adapter.js.map +1 -0
  333. package/dist/platforms/zed-adapter.d.ts +10 -0
  334. package/dist/platforms/zed-adapter.d.ts.map +1 -0
  335. package/dist/platforms/zed-adapter.js +72 -0
  336. package/dist/platforms/zed-adapter.js.map +1 -0
  337. package/dist/proxy/index.d.ts +7 -0
  338. package/dist/proxy/index.d.ts.map +1 -0
  339. package/dist/proxy/index.js +5 -0
  340. package/dist/proxy/index.js.map +1 -0
  341. package/dist/proxy/otlp-receiver.d.ts +28 -0
  342. package/dist/proxy/otlp-receiver.d.ts.map +1 -0
  343. package/dist/proxy/otlp-receiver.js +319 -0
  344. package/dist/proxy/otlp-receiver.js.map +1 -0
  345. package/dist/proxy/proxy-manager.d.ts +47 -0
  346. package/dist/proxy/proxy-manager.d.ts.map +1 -0
  347. package/dist/proxy/proxy-manager.js +338 -0
  348. package/dist/proxy/proxy-manager.js.map +1 -0
  349. package/dist/proxy/types.d.ts +72 -0
  350. package/dist/proxy/types.d.ts.map +1 -0
  351. package/dist/proxy/types.js +33 -0
  352. package/dist/proxy/types.js.map +1 -0
  353. package/dist/proxy/upstream-http.d.ts +26 -0
  354. package/dist/proxy/upstream-http.d.ts.map +1 -0
  355. package/dist/proxy/upstream-http.js +209 -0
  356. package/dist/proxy/upstream-http.js.map +1 -0
  357. package/dist/proxy/upstream-stdio.d.ts +25 -0
  358. package/dist/proxy/upstream-stdio.d.ts.map +1 -0
  359. package/dist/proxy/upstream-stdio.js +256 -0
  360. package/dist/proxy/upstream-stdio.js.map +1 -0
  361. package/dist/security/audit-trail.d.ts +74 -0
  362. package/dist/security/audit-trail.d.ts.map +1 -0
  363. package/dist/security/audit-trail.js +338 -0
  364. package/dist/security/audit-trail.js.map +1 -0
  365. package/dist/security/index.d.ts +5 -0
  366. package/dist/security/index.d.ts.map +1 -0
  367. package/dist/security/index.js +4 -0
  368. package/dist/security/index.js.map +1 -0
  369. package/dist/security/ssrf.d.ts +2 -0
  370. package/dist/security/ssrf.d.ts.map +1 -0
  371. package/dist/security/ssrf.js +126 -0
  372. package/dist/security/ssrf.js.map +1 -0
  373. package/dist/server.d.ts +14 -0
  374. package/dist/server.d.ts.map +1 -0
  375. package/dist/server.js +117 -0
  376. package/dist/server.js.map +1 -0
  377. package/dist/shared/__test-utils__/log-output.d.ts +49 -0
  378. package/dist/shared/__test-utils__/log-output.d.ts.map +1 -0
  379. package/dist/shared/__test-utils__/log-output.js +38 -0
  380. package/dist/shared/__test-utils__/log-output.js.map +1 -0
  381. package/dist/shared/config.d.ts +56 -0
  382. package/dist/shared/config.d.ts.map +1 -0
  383. package/dist/shared/config.js +290 -0
  384. package/dist/shared/config.js.map +1 -0
  385. package/dist/shared/errors.d.ts +139 -0
  386. package/dist/shared/errors.d.ts.map +1 -0
  387. package/dist/shared/errors.js +406 -0
  388. package/dist/shared/errors.js.map +1 -0
  389. package/dist/shared/events/factory.d.ts +143 -0
  390. package/dist/shared/events/factory.d.ts.map +1 -0
  391. package/dist/shared/events/factory.js +351 -0
  392. package/dist/shared/events/factory.js.map +1 -0
  393. package/dist/shared/events/index.d.ts +6 -0
  394. package/dist/shared/events/index.d.ts.map +1 -0
  395. package/dist/shared/events/index.js +3 -0
  396. package/dist/shared/events/index.js.map +1 -0
  397. package/dist/shared/events/serialize.d.ts +87 -0
  398. package/dist/shared/events/serialize.d.ts.map +1 -0
  399. package/dist/shared/events/serialize.js +510 -0
  400. package/dist/shared/events/serialize.js.map +1 -0
  401. package/dist/shared/events/types.d.ts +139 -0
  402. package/dist/shared/events/types.d.ts.map +1 -0
  403. package/dist/shared/events/types.js +2 -0
  404. package/dist/shared/events/types.js.map +1 -0
  405. package/dist/shared/harvest/event-buffer.d.ts +59 -0
  406. package/dist/shared/harvest/event-buffer.d.ts.map +1 -0
  407. package/dist/shared/harvest/event-buffer.js +100 -0
  408. package/dist/shared/harvest/event-buffer.js.map +1 -0
  409. package/dist/shared/harvest/harvest-scheduler.d.ts +200 -0
  410. package/dist/shared/harvest/harvest-scheduler.d.ts.map +1 -0
  411. package/dist/shared/harvest/harvest-scheduler.js +647 -0
  412. package/dist/shared/harvest/harvest-scheduler.js.map +1 -0
  413. package/dist/shared/harvest/index.d.ts +7 -0
  414. package/dist/shared/harvest/index.d.ts.map +1 -0
  415. package/dist/shared/harvest/index.js +4 -0
  416. package/dist/shared/harvest/index.js.map +1 -0
  417. package/dist/shared/harvest/metric-aggregator.d.ts +115 -0
  418. package/dist/shared/harvest/metric-aggregator.d.ts.map +1 -0
  419. package/dist/shared/harvest/metric-aggregator.js +247 -0
  420. package/dist/shared/harvest/metric-aggregator.js.map +1 -0
  421. package/dist/shared/index.d.ts +22 -0
  422. package/dist/shared/index.d.ts.map +1 -0
  423. package/dist/shared/index.js +13 -0
  424. package/dist/shared/index.js.map +1 -0
  425. package/dist/shared/logger.d.ts +57 -0
  426. package/dist/shared/logger.d.ts.map +1 -0
  427. package/dist/shared/logger.js +166 -0
  428. package/dist/shared/logger.js.map +1 -0
  429. package/dist/shared/pricing-data.d.ts +4 -0
  430. package/dist/shared/pricing-data.d.ts.map +1 -0
  431. package/dist/shared/pricing-data.js +473 -0
  432. package/dist/shared/pricing-data.js.map +1 -0
  433. package/dist/shared/pricing.d.ts +148 -0
  434. package/dist/shared/pricing.d.ts.map +1 -0
  435. package/dist/shared/pricing.js +528 -0
  436. package/dist/shared/pricing.js.map +1 -0
  437. package/dist/shared/redact.d.ts +33 -0
  438. package/dist/shared/redact.d.ts.map +1 -0
  439. package/dist/shared/redact.js +110 -0
  440. package/dist/shared/redact.js.map +1 -0
  441. package/dist/shared/timing.d.ts +96 -0
  442. package/dist/shared/timing.d.ts.map +1 -0
  443. package/dist/shared/timing.js +173 -0
  444. package/dist/shared/timing.js.map +1 -0
  445. package/dist/shared/tokens.d.ts +145 -0
  446. package/dist/shared/tokens.d.ts.map +1 -0
  447. package/dist/shared/tokens.js +492 -0
  448. package/dist/shared/tokens.js.map +1 -0
  449. package/dist/shared/transport/events-api.d.ts +14 -0
  450. package/dist/shared/transport/events-api.d.ts.map +1 -0
  451. package/dist/shared/transport/events-api.js +29 -0
  452. package/dist/shared/transport/events-api.js.map +1 -0
  453. package/dist/shared/transport/http-client.d.ts +49 -0
  454. package/dist/shared/transport/http-client.d.ts.map +1 -0
  455. package/dist/shared/transport/http-client.js +381 -0
  456. package/dist/shared/transport/http-client.js.map +1 -0
  457. package/dist/shared/transport/index.d.ts +10 -0
  458. package/dist/shared/transport/index.d.ts.map +1 -0
  459. package/dist/shared/transport/index.js +6 -0
  460. package/dist/shared/transport/index.js.map +1 -0
  461. package/dist/shared/transport/logs-api.d.ts +29 -0
  462. package/dist/shared/transport/logs-api.d.ts.map +1 -0
  463. package/dist/shared/transport/logs-api.js +40 -0
  464. package/dist/shared/transport/logs-api.js.map +1 -0
  465. package/dist/shared/transport/metric-api.d.ts +9 -0
  466. package/dist/shared/transport/metric-api.d.ts.map +1 -0
  467. package/dist/shared/transport/metric-api.js +39 -0
  468. package/dist/shared/transport/metric-api.js.map +1 -0
  469. package/dist/shared/transport/otlp-event-bridge.d.ts +22 -0
  470. package/dist/shared/transport/otlp-event-bridge.d.ts.map +1 -0
  471. package/dist/shared/transport/otlp-event-bridge.js +50 -0
  472. package/dist/shared/transport/otlp-event-bridge.js.map +1 -0
  473. package/dist/shared/transport/otlp-shared.d.ts +14 -0
  474. package/dist/shared/transport/otlp-shared.d.ts.map +1 -0
  475. package/dist/shared/transport/otlp-shared.js +49 -0
  476. package/dist/shared/transport/otlp-shared.js.map +1 -0
  477. package/dist/shared/transport/otlp-transport.d.ts +58 -0
  478. package/dist/shared/transport/otlp-transport.d.ts.map +1 -0
  479. package/dist/shared/transport/otlp-transport.js +236 -0
  480. package/dist/shared/transport/otlp-transport.js.map +1 -0
  481. package/dist/shared/transport/types.d.ts +129 -0
  482. package/dist/shared/transport/types.d.ts.map +1 -0
  483. package/dist/shared/transport/types.js +2 -0
  484. package/dist/shared/transport/types.js.map +1 -0
  485. package/dist/shared/version.d.ts +2 -0
  486. package/dist/shared/version.d.ts.map +1 -0
  487. package/dist/shared/version.js +2 -0
  488. package/dist/shared/version.js.map +1 -0
  489. package/dist/storage/index.d.ts +7 -0
  490. package/dist/storage/index.d.ts.map +1 -0
  491. package/dist/storage/index.js +4 -0
  492. package/dist/storage/index.js.map +1 -0
  493. package/dist/storage/local-store.d.ts +153 -0
  494. package/dist/storage/local-store.d.ts.map +1 -0
  495. package/dist/storage/local-store.js +719 -0
  496. package/dist/storage/local-store.js.map +1 -0
  497. package/dist/storage/retention.d.ts +2 -0
  498. package/dist/storage/retention.d.ts.map +1 -0
  499. package/dist/storage/retention.js +53 -0
  500. package/dist/storage/retention.js.map +1 -0
  501. package/dist/storage/session-store.d.ts +97 -0
  502. package/dist/storage/session-store.d.ts.map +1 -0
  503. package/dist/storage/session-store.js +391 -0
  504. package/dist/storage/session-store.js.map +1 -0
  505. package/dist/storage/types.d.ts +64 -0
  506. package/dist/storage/types.d.ts.map +1 -0
  507. package/dist/storage/types.js +2 -0
  508. package/dist/storage/types.js.map +1 -0
  509. package/dist/storage/weekly-summary.d.ts +61 -0
  510. package/dist/storage/weekly-summary.d.ts.map +1 -0
  511. package/dist/storage/weekly-summary.js +243 -0
  512. package/dist/storage/weekly-summary.js.map +1 -0
  513. package/dist/tools/analytics-tools.d.ts +101 -0
  514. package/dist/tools/analytics-tools.d.ts.map +1 -0
  515. package/dist/tools/analytics-tools.js +71 -0
  516. package/dist/tools/analytics-tools.js.map +1 -0
  517. package/dist/tools/cost-tools.d.ts +121 -0
  518. package/dist/tools/cost-tools.d.ts.map +1 -0
  519. package/dist/tools/cost-tools.js +174 -0
  520. package/dist/tools/cost-tools.js.map +1 -0
  521. package/dist/tools/cross-session-tools.d.ts +376 -0
  522. package/dist/tools/cross-session-tools.d.ts.map +1 -0
  523. package/dist/tools/cross-session-tools.js +820 -0
  524. package/dist/tools/cross-session-tools.js.map +1 -0
  525. package/dist/tools/extended-analytics-tools.d.ts +164 -0
  526. package/dist/tools/extended-analytics-tools.d.ts.map +1 -0
  527. package/dist/tools/extended-analytics-tools.js +121 -0
  528. package/dist/tools/extended-analytics-tools.js.map +1 -0
  529. package/dist/tools/index.d.ts +7 -0
  530. package/dist/tools/index.d.ts.map +1 -0
  531. package/dist/tools/index.js +4 -0
  532. package/dist/tools/index.js.map +1 -0
  533. package/dist/tools/session-stats.d.ts +162 -0
  534. package/dist/tools/session-stats.d.ts.map +1 -0
  535. package/dist/tools/session-stats.js +1054 -0
  536. package/dist/tools/session-stats.js.map +1 -0
  537. package/dist/tools/workflow-tools.d.ts +126 -0
  538. package/dist/tools/workflow-tools.d.ts.map +1 -0
  539. package/dist/tools/workflow-tools.js +274 -0
  540. package/dist/tools/workflow-tools.js.map +1 -0
  541. package/dist/tracing/mcp-tracer.d.ts +4 -0
  542. package/dist/tracing/mcp-tracer.d.ts.map +1 -0
  543. package/dist/tracing/mcp-tracer.js +14 -0
  544. package/dist/tracing/mcp-tracer.js.map +1 -0
  545. package/dist/tracing/session-span.d.ts +14 -0
  546. package/dist/tracing/session-span.d.ts.map +1 -0
  547. package/dist/tracing/session-span.js +53 -0
  548. package/dist/tracing/session-span.js.map +1 -0
  549. package/dist/tracing/task-span-tracker.d.ts +11 -0
  550. package/dist/tracing/task-span-tracker.d.ts.map +1 -0
  551. package/dist/tracing/task-span-tracker.js +59 -0
  552. package/dist/tracing/task-span-tracker.js.map +1 -0
  553. package/dist/tracing/tool-call-span.d.ts +4 -0
  554. package/dist/tracing/tool-call-span.d.ts.map +1 -0
  555. package/dist/tracing/tool-call-span.js +60 -0
  556. package/dist/tracing/tool-call-span.js.map +1 -0
  557. package/dist/transport/index.d.ts +3 -0
  558. package/dist/transport/index.d.ts.map +1 -0
  559. package/dist/transport/index.js +2 -0
  560. package/dist/transport/index.js.map +1 -0
  561. package/dist/transport/log-ingest.d.ts +42 -0
  562. package/dist/transport/log-ingest.d.ts.map +1 -0
  563. package/dist/transport/log-ingest.js +151 -0
  564. package/dist/transport/log-ingest.js.map +1 -0
  565. package/dist/transport/nr-ingest.d.ts +171 -0
  566. package/dist/transport/nr-ingest.d.ts.map +1 -0
  567. package/dist/transport/nr-ingest.js +659 -0
  568. package/dist/transport/nr-ingest.js.map +1 -0
  569. package/dist/types.d.ts +45 -0
  570. package/dist/types.d.ts.map +1 -0
  571. package/dist/types.js +2 -0
  572. package/dist/types.js.map +1 -0
  573. package/dist/web/assets/index-BrL281N-.css +2 -0
  574. package/dist/web/assets/index-CcaYZzXm.js +42 -0
  575. package/dist/web/favicon.svg +15 -0
  576. package/dist/web/index.html +15 -0
  577. package/examples/local-alert-rules.json +106 -0
  578. package/package.json +129 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/shared/pricing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { AgentConfig } from './config.js';
2
+ /**
3
+ * Returns a redacted deep copy of `value`. Walks objects and arrays up to
4
+ * MAX_DEPTH; replaces any string/number/boolean value whose KEY (in the
5
+ * containing object) matches the secret-key denylist with the literal '***'.
6
+ *
7
+ * - Strings outside the denylist are returned as-is (no value-pattern matching;
8
+ * that would risk false positives on legitimate values like model names).
9
+ * - Cycles are detected via per-path ancestor tracking and returned as `'[circular]'`.
10
+ * DAG-shaped objects (same reference at sibling positions) are walked in full.
11
+ * - Functions, symbols, undefined are returned as-is (they don't serialize anyway).
12
+ * - **`Map` and `Set` values are NOT walked for secrets** — they are summarized
13
+ * as `'[Map(N)]'` / `'[Set(N)]'` because `Object.entries` does not enumerate
14
+ * their contents (§RE2). If credentials are stored as Map entries under a
15
+ * non-secret key (e.g. `{ headers: new Map([['Authorization', 'Bearer x']]) }`),
16
+ * they will NOT be redacted. Convert to plain objects before passing to `redact()`.
17
+ */
18
+ export declare function redact<T>(value: T): T;
19
+ /**
20
+ * Returns a redacted copy of the given `AgentConfig`, suitable for diagnostic
21
+ * dumps to logs, support tickets, or operator UIs. `licenseKey` becomes
22
+ * `'***'`; values inside `otlpHeaders` whose key matches the secret denylist
23
+ * (`Authorization`, `api-key`, etc.) are also replaced. All other fields
24
+ * (`appName`, `collectorHost`, `accountId`, `transport`, `recordContent`,
25
+ * `highSecurity`, etc.) pass through unchanged so the output stays useful.
26
+ *
27
+ * Keep `redact()` for arbitrary objects; reach for `safeForLog()` when you
28
+ * specifically have an `AgentConfig` and want a typed return.
29
+ *
30
+ *
31
+ */
32
+ export declare function safeForLog(config: AgentConfig): Readonly<AgentConfig>;
33
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/shared/redact.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoB/C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAErC;AA4CD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,CAErE"}
@@ -0,0 +1,110 @@
1
+ // ---------------------------------------------------------------------------
2
+ // redact() — defensively strip secret-shaped fields before logging or
3
+ // serialization. Matches keys (case-insensitive) against a denylist of
4
+ // secret-bearing names; replaces matching values with the literal string
5
+ // '***'.
6
+ //
7
+ // The library handles credentials (license keys, OTLP auth headers, provider
8
+ // API keys) and provider responses that may contain user prompt fragments.
9
+ // Callers should pass any object containing config or response data through
10
+ // redact() before handing it to a logger or external sink.
11
+ //
12
+ // safeForLog(config) — convenience wrapper that returns a redacted copy of an
13
+ // AgentConfig, suitable for diagnostic dumps. See
14
+ // ---------------------------------------------------------------------------
15
+ // Pattern notes:
16
+ // - `key(?!s)` matches `apiKey`, `licenseKey`, bare `key`, but NOT `keys` (plural, §RE1).
17
+ // The `\b` word-boundary upgrade that was applied to `token\b` (§LR1) and
18
+ // `credentials?\b` (§LR2) cannot be applied here: CamelCase names like `licenseKey`
19
+ // and `apiKey` do NOT have a word boundary before the `K` (both sides are word chars),
20
+ // so `\bkey` would FAIL to match them (§11.6, deliberate false-positive trade-off).
21
+ // Mid-word false positives (`monkey`, `jockey`) are accepted in exchange for reliably
22
+ // redacting all camelCase key properties. A regex-only fix is not feasible without
23
+ // enumerating every legitimate CamelCase prefix, which would miss future additions.
24
+ // - `token\b` matches `apiToken`, `accessToken`, bare `token`, but NOT `tokenCount`,
25
+ // `tokenize`, `tokenAmount`, etc. (§LR1). The `\b` works here because `token` almost
26
+ // never appears mid-word in legitimate property names.
27
+ // - `credentials?\b` matches `credential` and `credentials`, but NOT `credentialType`,
28
+ // `credentialProvider`, etc. (§LR2). Same fix applied to `passwords?\b`.
29
+ const SECRET_KEY_RE = /key(?!s)|token\b|secret|passwords?\b|authorization|credentials?\b|bearer/i;
30
+ const REDACTED = '***';
31
+ const MAX_DEPTH = 8;
32
+ /**
33
+ * Returns a redacted deep copy of `value`. Walks objects and arrays up to
34
+ * MAX_DEPTH; replaces any string/number/boolean value whose KEY (in the
35
+ * containing object) matches the secret-key denylist with the literal '***'.
36
+ *
37
+ * - Strings outside the denylist are returned as-is (no value-pattern matching;
38
+ * that would risk false positives on legitimate values like model names).
39
+ * - Cycles are detected via per-path ancestor tracking and returned as `'[circular]'`.
40
+ * DAG-shaped objects (same reference at sibling positions) are walked in full.
41
+ * - Functions, symbols, undefined are returned as-is (they don't serialize anyway).
42
+ * - **`Map` and `Set` values are NOT walked for secrets** — they are summarized
43
+ * as `'[Map(N)]'` / `'[Set(N)]'` because `Object.entries` does not enumerate
44
+ * their contents (§RE2). If credentials are stored as Map entries under a
45
+ * non-secret key (e.g. `{ headers: new Map([['Authorization', 'Bearer x']]) }`),
46
+ * they will NOT be redacted. Convert to plain objects before passing to `redact()`.
47
+ */
48
+ export function redact(value) {
49
+ return redactInner(value, 0, new WeakSet());
50
+ }
51
+ function redactInner(value, depth, ancestors) {
52
+ if (depth > MAX_DEPTH)
53
+ return '[max-depth]';
54
+ if (value === null || typeof value !== 'object')
55
+ return value;
56
+ // Use per-path ancestor tracking so DAG-shaped objects (the same reference
57
+ // appearing at two sibling positions) are walked in full; only true cycles
58
+ // (an ancestor of the current node) are collapsed to '[circular]'.
59
+ if (ancestors.has(value))
60
+ return '[circular]';
61
+ ancestors.add(value);
62
+ try {
63
+ if (Array.isArray(value)) {
64
+ return value.map((v) => redactInner(v, depth + 1, ancestors));
65
+ }
66
+ // Host objects that store their data in internal slots, not enumerable
67
+ // properties — walking via Object.entries produces {} or garbled output.
68
+ if (value instanceof Date ||
69
+ value instanceof RegExp ||
70
+ value instanceof URL ||
71
+ (typeof Buffer !== 'undefined' && value instanceof Buffer) ||
72
+ value instanceof Uint8Array) {
73
+ return value;
74
+ }
75
+ if (value instanceof Map)
76
+ return `[Map(${value.size})]`;
77
+ if (value instanceof Set)
78
+ return `[Set(${value.size})]`;
79
+ const result = {};
80
+ for (const [key, v] of Object.entries(value)) {
81
+ if (SECRET_KEY_RE.test(key)) {
82
+ result[key] = v == null ? v : REDACTED;
83
+ }
84
+ else {
85
+ result[key] = redactInner(v, depth + 1, ancestors);
86
+ }
87
+ }
88
+ return result;
89
+ }
90
+ finally {
91
+ ancestors.delete(value);
92
+ }
93
+ }
94
+ /**
95
+ * Returns a redacted copy of the given `AgentConfig`, suitable for diagnostic
96
+ * dumps to logs, support tickets, or operator UIs. `licenseKey` becomes
97
+ * `'***'`; values inside `otlpHeaders` whose key matches the secret denylist
98
+ * (`Authorization`, `api-key`, etc.) are also replaced. All other fields
99
+ * (`appName`, `collectorHost`, `accountId`, `transport`, `recordContent`,
100
+ * `highSecurity`, etc.) pass through unchanged so the output stays useful.
101
+ *
102
+ * Keep `redact()` for arbitrary objects; reach for `safeForLog()` when you
103
+ * specifically have an `AgentConfig` and want a typed return.
104
+ *
105
+ *
106
+ */
107
+ export function safeForLog(config) {
108
+ return Object.freeze(redact(config));
109
+ }
110
+ //# sourceMappingURL=redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/shared/redact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ export interface ThinkingPhase {
2
+ /** Wall-clock millisecond timestamp the phase began (from `performance.now()`). */
3
+ readonly startAt: number;
4
+ /** Wall-clock millisecond timestamp the phase ended (from `performance.now()`). */
5
+ readonly endAt: number;
6
+ /** `endAt - startAt`. */
7
+ readonly durationMs: number;
8
+ }
9
+ export interface RequestTimerMetrics {
10
+ /** Wall-clock total duration (ms). */
11
+ readonly durationMs: number;
12
+ /** Time to first NON-thinking content token; null if non-streaming. */
13
+ readonly timeToFirstTokenMs: number | null;
14
+ /**
15
+ * Sum of all closed thinking phase durations (ms); null if no phases were
16
+ * recorded. With a single phase this matches the legacy semantics.
17
+ */
18
+ readonly thinkingDurationMs: number | null;
19
+ /**
20
+ * Closed thinking phases as recorded, in start-order. Empty when no phases
21
+ * were marked. Useful for OTel span emission where each phase becomes its
22
+ * own child span.
23
+ */
24
+ readonly thinkingPhases: readonly ThinkingPhase[];
25
+ /**
26
+ * Duration spent generating output (i.e. wall-clock minus thinking time).
27
+ * Assumes thinking does not overlap with content generation; see file header.
28
+ */
29
+ readonly generationDurationMs: number;
30
+ /** Output tokens / (durationMs / 1000); null if outputTokens not provided. */
31
+ readonly tokensPerSecond: number | null;
32
+ /**
33
+ * Estimated SDK/network overhead — the wall-clock time the request spent
34
+ * outside both thinking and content generation. Algebraically:
35
+ *
36
+ * overheadMs = TTFT − thinkingDuration
37
+ * = (firstTokenAt − startAt) − Σ(phase.endAt − phase.startAt)
38
+ *
39
+ * Clamped to ≥ 0. Relies on the non-overlap invariant documented in the
40
+ * file header.
41
+ */
42
+ readonly overheadMs: number;
43
+ }
44
+ export declare class RequestTimer {
45
+ private startAt;
46
+ private stopAt;
47
+ private firstTokenAt;
48
+ /** Phase that has been started but not yet ended. */
49
+ private openPhase;
50
+ /** Closed phases in start-order. */
51
+ private closedPhases;
52
+ /** Record the request start time. Idempotent — only the first call takes effect (§TM2). */
53
+ start(): void;
54
+ /**
55
+ * Record when the first NON-thinking content token arrives. Idempotent —
56
+ * only the first call takes effect. Must be called after `markThinkingEnd()`
57
+ * if a thinking phase is being tracked; see the file header for the full
58
+ * lifecycle invariant.
59
+ */
60
+ markFirstToken(): void;
61
+ /**
62
+ * Mark the beginning of a thinking phase.
63
+ *
64
+ * - First call (or first call after `markThinkingEnd`): opens a new phase.
65
+ * - Subsequent call WITHOUT a matching `markThinkingEnd` first: debug log
66
+ * and ignored — first-write-wins within the open phase.
67
+ *
68
+ * Multiple phases per request are supported; each
69
+ * (start, end) pair appears in `metrics.thinkingPhases`.
70
+ */
71
+ markThinkingStart(): void;
72
+ /**
73
+ * Mark the end of the currently open thinking phase.
74
+ *
75
+ * - With an open phase: closes it and appends to the closed-phase list.
76
+ * - With no open phase: debug log and ignored.
77
+ */
78
+ markThinkingEnd(): void;
79
+ /** Record the request end time. Idempotent — only the first call takes effect (§TM2). */
80
+ stop(): void;
81
+ /**
82
+ * Compute derived timing metrics.
83
+ *
84
+ * **Side effects:** if a thinking phase was started but never ended (e.g. the
85
+ * stream disconnected before `markThinkingEnd()` was called), this method
86
+ * auto-closes the open phase at `stopAt` and writes back `this.closedPhases`
87
+ * and `this.openPhase = null` so subsequent calls see a consistent state
88
+ * (§TIM1). This mutation is intentional — it means `getMetrics()` is safe to
89
+ * call multiple times and will return consistent results after the first call.
90
+ *
91
+ * @param outputTokens — If provided, `tokensPerSecond` is calculated.
92
+ * @throws if `start()` or `stop()` has not been called.
93
+ */
94
+ getMetrics(outputTokens?: number): RequestTimerMetrics;
95
+ }
96
+ //# sourceMappingURL=timing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../src/shared/timing.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,aAAa;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,8EAA8E;IAC9E,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAWD,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAAuB;IAC3C,qDAAqD;IACrD,OAAO,CAAC,SAAS,CAA0B;IAC3C,oCAAoC;IACpC,OAAO,CAAC,YAAY,CAAqB;IAEzC,2FAA2F;IAC3F,KAAK,IAAI,IAAI;IAQb;;;;;OAKG;IACH,cAAc,IAAI,IAAI;IAQtB;;;;;;;;;OASG;IACH,iBAAiB,IAAI,IAAI;IAQzB;;;;;OAKG;IACH,eAAe,IAAI,IAAI;IASvB,yFAAyF;IACzF,IAAI,IAAI,IAAI;IAQZ;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,mBAAmB;CA6EvD"}
@@ -0,0 +1,173 @@
1
+ // ---------------------------------------------------------------------------
2
+ // RequestTimer — high-precision latency measurement for AI SDK calls
3
+ //
4
+ // Lifecycle invariant:
5
+ // start()
6
+ // → [optional] markThinkingStart() → markThinkingEnd() (one or more pairs)
7
+ // → markFirstToken() ← first NON-thinking content token
8
+ // → stop()
9
+ //
10
+ // The timer assumes thinking phases do NOT overlap with content generation.
11
+ // All providers we currently wrap (Anthropic extended thinking, Gemini thought
12
+ // summaries) emit thinking as one or more discrete blocks before any content
13
+ // tokens. Multiple thinking phases are supported via
14
+ // repeated markThinkingStart/markThinkingEnd pairs; thinkingDurationMs is the
15
+ // sum of the closed phase durations.
16
+ //
17
+ // Idempotency policy: all event-marking methods are
18
+ // first-write-wins. For markThinkingStart/markThinkingEnd "first-write-wins"
19
+ // applies WITHIN an open-phase state — once a phase is closed (markThinkingEnd
20
+ // has been called), a subsequent markThinkingStart opens a NEW phase rather
21
+ // than being treated as a duplicate.
22
+ // ---------------------------------------------------------------------------
23
+ import { createLogger } from './logger.js';
24
+ const timerLogger = createLogger('timing');
25
+ export class RequestTimer {
26
+ startAt = null;
27
+ stopAt = null;
28
+ firstTokenAt = null;
29
+ /** Phase that has been started but not yet ended. */
30
+ openPhase = null;
31
+ /** Closed phases in start-order. */
32
+ closedPhases = [];
33
+ /** Record the request start time. Idempotent — only the first call takes effect (§TM2). */
34
+ start() {
35
+ if (this.startAt !== null) {
36
+ timerLogger.debug('start() called more than once — ignoring duplicate');
37
+ return;
38
+ }
39
+ this.startAt = performance.now();
40
+ }
41
+ /**
42
+ * Record when the first NON-thinking content token arrives. Idempotent —
43
+ * only the first call takes effect. Must be called after `markThinkingEnd()`
44
+ * if a thinking phase is being tracked; see the file header for the full
45
+ * lifecycle invariant.
46
+ */
47
+ markFirstToken() {
48
+ if (this.firstTokenAt === null) {
49
+ this.firstTokenAt = performance.now();
50
+ }
51
+ else {
52
+ timerLogger.debug('markFirstToken called more than once — ignoring duplicate');
53
+ }
54
+ }
55
+ /**
56
+ * Mark the beginning of a thinking phase.
57
+ *
58
+ * - First call (or first call after `markThinkingEnd`): opens a new phase.
59
+ * - Subsequent call WITHOUT a matching `markThinkingEnd` first: debug log
60
+ * and ignored — first-write-wins within the open phase.
61
+ *
62
+ * Multiple phases per request are supported; each
63
+ * (start, end) pair appears in `metrics.thinkingPhases`.
64
+ */
65
+ markThinkingStart() {
66
+ if (this.openPhase !== null) {
67
+ timerLogger.debug('markThinkingStart called while a phase is open — ignoring duplicate');
68
+ return;
69
+ }
70
+ this.openPhase = { startAt: performance.now() };
71
+ }
72
+ /**
73
+ * Mark the end of the currently open thinking phase.
74
+ *
75
+ * - With an open phase: closes it and appends to the closed-phase list.
76
+ * - With no open phase: debug log and ignored.
77
+ */
78
+ markThinkingEnd() {
79
+ if (this.openPhase === null) {
80
+ timerLogger.debug('markThinkingEnd called with no open phase — ignoring');
81
+ return;
82
+ }
83
+ this.closedPhases.push({ startAt: this.openPhase.startAt, endAt: performance.now() });
84
+ this.openPhase = null;
85
+ }
86
+ /** Record the request end time. Idempotent — only the first call takes effect (§TM2). */
87
+ stop() {
88
+ if (this.stopAt !== null) {
89
+ timerLogger.debug('stop() called more than once — ignoring duplicate');
90
+ return;
91
+ }
92
+ this.stopAt = performance.now();
93
+ }
94
+ /**
95
+ * Compute derived timing metrics.
96
+ *
97
+ * **Side effects:** if a thinking phase was started but never ended (e.g. the
98
+ * stream disconnected before `markThinkingEnd()` was called), this method
99
+ * auto-closes the open phase at `stopAt` and writes back `this.closedPhases`
100
+ * and `this.openPhase = null` so subsequent calls see a consistent state
101
+ * (§TIM1). This mutation is intentional — it means `getMetrics()` is safe to
102
+ * call multiple times and will return consistent results after the first call.
103
+ *
104
+ * @param outputTokens — If provided, `tokensPerSecond` is calculated.
105
+ * @throws if `start()` or `stop()` has not been called.
106
+ */
107
+ getMetrics(outputTokens) {
108
+ if (this.startAt === null) {
109
+ throw new Error('RequestTimer: start() must be called before getMetrics()');
110
+ }
111
+ if (this.stopAt === null) {
112
+ throw new Error('RequestTimer: stop() must be called before getMetrics()');
113
+ }
114
+ const durationMs = this.stopAt - this.startAt;
115
+ // Clamp to 0 so a markFirstToken() call that happens before start() (out of
116
+ // order usage) produces 0 rather than a negative latency (§TM1).
117
+ const timeToFirstTokenMs = this.firstTokenAt !== null ? Math.max(0, this.firstTokenAt - this.startAt) : null;
118
+ // Auto-close any phase that was started but never ended (e.g. stream
119
+ // disconnected during thinking, so markThinkingEnd was never called).
120
+ // Without this, the open phase's wall-clock time is counted inside
121
+ // generationDurationMs instead of thinkingDurationMs (§TM1).
122
+ let effectiveClosedPhases = this.closedPhases;
123
+ if (this.openPhase !== null) {
124
+ timerLogger.debug('thinking phase still open at getMetrics() — auto-closed at stopAt', {
125
+ openStart: this.openPhase.startAt,
126
+ stopAt: this.stopAt,
127
+ });
128
+ effectiveClosedPhases = [
129
+ ...this.closedPhases,
130
+ { startAt: this.openPhase.startAt, endAt: this.stopAt },
131
+ ];
132
+ // Move the auto-closed phase into closedPhases so subsequent
133
+ // markThinkingEnd() or getMetrics() calls see a consistent state (§TM1).
134
+ this.closedPhases = effectiveClosedPhases;
135
+ this.openPhase = null;
136
+ }
137
+ const thinkingPhases = effectiveClosedPhases.map((p) => ({
138
+ startAt: p.startAt,
139
+ endAt: p.endAt,
140
+ durationMs: p.endAt - p.startAt,
141
+ }));
142
+ const thinkingDurationMs = thinkingPhases.length > 0 ? thinkingPhases.reduce((sum, p) => sum + p.durationMs, 0) : null;
143
+ const generationDurationMs = Math.max(0, durationMs - (thinkingDurationMs ?? 0));
144
+ // 6: align tokensPerSecond semantics with `factory.ts` —
145
+ // return `null` when either the duration is zero or no output tokens were
146
+ // produced, treating both as "no meaningful rate to report". The previous
147
+ // path returned 0 when `outputTokens === 0`, which read downstream as a
148
+ // measured-zero rate rather than a missing measurement.
149
+ //
150
+ // 6: compute as `(outputTokens / durationMs) * 1000`
151
+ // rather than `outputTokens / (durationMs / 1000)`. The two are
152
+ // mathematically equivalent for non-degenerate inputs but the multiply
153
+ // form preserves precision better when `durationMs` is small (e.g.
154
+ // sub-millisecond synthetic test inputs) — `durationMs / 1000` rounds to
155
+ // a tiny float before the division. Aligns with the formula in
156
+ // `events/factory.ts:tokensPerSecond` so the two paths agree bit-for-bit
157
+ // on identical inputs.
158
+ const tokensPerSecond = outputTokens !== undefined && outputTokens > 0 && durationMs > 0
159
+ ? (outputTokens / durationMs) * 1000
160
+ : null;
161
+ const overheadMs = Math.max(0, (timeToFirstTokenMs ?? 0) - (thinkingDurationMs ?? 0));
162
+ return {
163
+ durationMs,
164
+ timeToFirstTokenMs,
165
+ thinkingDurationMs,
166
+ thinkingPhases,
167
+ generationDurationMs,
168
+ tokensPerSecond,
169
+ overheadMs,
170
+ };
171
+ }
172
+ }
173
+ //# sourceMappingURL=timing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timing.js","sourceRoot":"","sources":["../../src/shared/timing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ import type { AiProvider } from './events/types.js';
2
+ export type { AiProvider };
3
+ export interface TokenUsage {
4
+ readonly inputTokens: number;
5
+ readonly outputTokens: number;
6
+ readonly thinkingTokens: number;
7
+ readonly cacheReadTokens: number;
8
+ readonly cacheCreationTokens: number;
9
+ readonly totalTokens: number;
10
+ }
11
+ /**
12
+ * Coerce a value to a non-negative integer. Returns 0 if the value is not a
13
+ * finite non-negative number. Useful for tolerating provider responses with
14
+ * missing, null, undefined, NaN, Infinity, negative, or float token counts.
15
+ *
16
+ * Floors fractional values (e.g. `safeInt(10.7) === 10`). When truncation
17
+ * actually drops a fractional part, emits a debug-level log so operators can
18
+ * diagnose buggy provider stubs that return non-integer token counts
19
+ *. The log is debug, not warn — token counts are
20
+ * provider-controlled and a single fractional value is not a library bug.
21
+ */
22
+ export declare function safeInt(value: unknown): number;
23
+ interface AnthropicUsage {
24
+ input_tokens?: number;
25
+ output_tokens?: number;
26
+ cache_creation_input_tokens?: number;
27
+ cache_read_input_tokens?: number;
28
+ thinking_tokens?: number;
29
+ }
30
+ export interface AnthropicResponse {
31
+ usage?: AnthropicUsage;
32
+ content?: {
33
+ type?: string;
34
+ }[];
35
+ }
36
+ export declare function extractAnthropicTokens(response: AnthropicResponse): TokenUsage;
37
+ interface GeminiUsageMetadata {
38
+ promptTokenCount?: number;
39
+ candidatesTokenCount?: number;
40
+ thoughtsTokenCount?: number;
41
+ cachedContentTokenCount?: number;
42
+ totalTokenCount?: number;
43
+ }
44
+ export interface GeminiResponse {
45
+ usageMetadata?: GeminiUsageMetadata;
46
+ }
47
+ export declare function extractGeminiTokens(response: GeminiResponse): TokenUsage;
48
+ interface OpenAIPromptTokensDetails {
49
+ cached_tokens?: number;
50
+ }
51
+ interface OpenAICompletionTokensDetails {
52
+ reasoning_tokens?: number;
53
+ }
54
+ interface OpenAIUsage {
55
+ prompt_tokens?: number;
56
+ completion_tokens?: number;
57
+ total_tokens?: number;
58
+ prompt_tokens_details?: OpenAIPromptTokensDetails;
59
+ completion_tokens_details?: OpenAICompletionTokensDetails;
60
+ }
61
+ export interface OpenAIResponse {
62
+ usage?: OpenAIUsage;
63
+ }
64
+ /**
65
+ * Extract `TokenUsage` from an OpenAI Chat Completions response (or the final
66
+ * stream chunk when `stream_options: { include_usage: true }` is set — the
67
+ * shape is identical).
68
+ *
69
+ * Mapping:
70
+ * - `prompt_tokens` → `inputTokens`
71
+ * - `completion_tokens` → `outputTokens`
72
+ * - `prompt_tokens_details.cached_tokens` → `cacheReadTokens`
73
+ * - `completion_tokens_details.reasoning_tokens` → `thinkingTokens`
74
+ *
75
+ * `total_tokens` (if present) is authoritative and used as `totalTokens`,
76
+ * matching the Gemini extractor's behavior. OpenAI does not expose
77
+ * cache-creation tokens — they're set to 0.
78
+ */
79
+ export declare function extractOpenAITokens(response: OpenAIResponse): TokenUsage;
80
+ interface CohereTokenCounts {
81
+ input_tokens?: number;
82
+ output_tokens?: number;
83
+ }
84
+ interface CohereUsage {
85
+ tokens?: CohereTokenCounts;
86
+ billed_units?: CohereTokenCounts;
87
+ }
88
+ export interface CohereResponse {
89
+ usage?: CohereUsage;
90
+ meta?: CohereUsage;
91
+ }
92
+ export declare function extractCohereTokens(response: CohereResponse): TokenUsage;
93
+ interface MistralUsage {
94
+ prompt_tokens?: number;
95
+ completion_tokens?: number;
96
+ total_tokens?: number;
97
+ }
98
+ export interface MistralResponse {
99
+ usage?: MistralUsage;
100
+ }
101
+ export declare function extractMistralTokens(response: MistralResponse): TokenUsage;
102
+ interface BedrockUsage {
103
+ inputTokens?: number;
104
+ outputTokens?: number;
105
+ totalTokens?: number;
106
+ cacheReadInputTokens?: number;
107
+ cacheWriteInputTokens?: number;
108
+ }
109
+ export interface BedrockResponse {
110
+ usage?: BedrockUsage;
111
+ }
112
+ export declare function extractBedrockTokens(response: BedrockResponse): TokenUsage;
113
+ /**
114
+ * Test-only — reset the warn-once set so per-test assertions can re-trigger.
115
+ */
116
+ export declare function __resetUnsupportedProvidersWarned(): void;
117
+ export declare function extractStreamTokens(finalChunk: unknown, provider: AiProvider): TokenUsage;
118
+ export declare class TokenAccumulator {
119
+ private provider;
120
+ private latestUsage;
121
+ private finalized;
122
+ constructor(provider: AiProvider);
123
+ addChunk(chunk: unknown): void;
124
+ finalize(): TokenUsage;
125
+ /**
126
+ * Reset the accumulator so it can be reused for a new stream
127
+ *. Zeroes the latest usage snapshot and clears the
128
+ * `finalized` flag. The provider binding is preserved — to track a
129
+ * different provider, construct a new `TokenAccumulator`.
130
+ *
131
+ * Useful when a streaming operation retries mid-stream (provider-side
132
+ * disconnect, client-side reconnect): instead of allocating a fresh
133
+ * instance for each attempt, the caller can `reset()` the existing one.
134
+ * Without this method `addChunk()` is a no-op after `finalize()` and
135
+ * subsequent `finalize()` calls return the stale snapshot.
136
+ */
137
+ reset(): void;
138
+ private addAnthropicChunk;
139
+ private addGeminiChunk;
140
+ private addOpenAIChunk;
141
+ private addCohereChunk;
142
+ private addMistralChunk;
143
+ private addBedrockChunk;
144
+ }
145
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/shared/tokens.ts"],"names":[],"mappings":"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"}