@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,69 @@
1
+ import { existsSync, realpathSync } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+ /**
4
+ * Resolve the directory containing bundled data files (alerts/ or dashboards/
5
+ * JSON definitions).
6
+ *
7
+ * The deploy modules ship as `dist/deploy/*.js` after TypeScript build, with
8
+ * data files copied into `dist/data/<name>/` by the postbuild step (see
9
+ * `package.json:build:server`). When running from a global npm install, the
10
+ * tarball contains everything under `dist/`, so the data lives at
11
+ * `<dist>/data/<name>/`.
12
+ *
13
+ * For local dev (running tests from `src/deploy/*.test.ts`), the JSON files
14
+ * live at the repo root in `<repoRoot>/<name>/`. We probe both locations so
15
+ * the same code works in both layouts.
16
+ *
17
+ * Uses `process.argv[1]` rather than `import.meta.url` to avoid tripping
18
+ * Jest's TS-module check — same pattern as `src/install/setup-wizard.ts`.
19
+ *
20
+ * Throws if no candidate exists — the deploy commands cannot run without the
21
+ * underlying data files.
22
+ */
23
+ export function resolveDataDir(name) {
24
+ const rawPath = process.argv[1] ?? process.cwd();
25
+ const scriptPath = (() => {
26
+ try {
27
+ return realpathSync(rawPath);
28
+ }
29
+ catch {
30
+ return rawPath;
31
+ }
32
+ })();
33
+ const scriptDir = dirname(scriptPath);
34
+ // Post-build (npm install -g): `dist/index.js` → `dist/data/<name>/`
35
+ const bundledFromIndex = resolve(scriptDir, 'data', name);
36
+ if (existsSync(bundledFromIndex))
37
+ return bundledFromIndex;
38
+ // Source/dev (`node dist/index.js` invoked from repo): repo root → `<root>/<name>/`
39
+ const sourceTreeFromIndex = resolve(scriptDir, '..', name);
40
+ if (existsSync(sourceTreeFromIndex))
41
+ return sourceTreeFromIndex;
42
+ // Direct module invocation (`node dist/deploy/deploy-dashboards.js`): one level deeper
43
+ const bundledFromDeploy = resolve(scriptDir, '..', 'data', name);
44
+ if (existsSync(bundledFromDeploy))
45
+ return bundledFromDeploy;
46
+ // Test layout (`src/deploy/*.test.ts` via jest): walk up to repo root
47
+ const sourceTreeFromDeploy = resolve(scriptDir, '..', '..', name);
48
+ if (existsSync(sourceTreeFromDeploy))
49
+ return sourceTreeFromDeploy;
50
+ // Final fallback — jest's `process.argv[1]` points into node_modules/jest,
51
+ // so `scriptDir`-based probes can miss the repo. Try `process.cwd()` last.
52
+ const fromCwd = resolve(process.cwd(), name);
53
+ if (existsSync(fromCwd))
54
+ return fromCwd;
55
+ // And the bundled location relative to cwd, in case cwd is inside dist/.
56
+ const bundledFromCwd = resolve(process.cwd(), 'dist', 'data', name);
57
+ if (existsSync(bundledFromCwd))
58
+ return bundledFromCwd;
59
+ throw new Error(`Could not locate ${name}/ data directory. Tried:\n` +
60
+ ` - ${bundledFromIndex}\n` +
61
+ ` - ${sourceTreeFromIndex}\n` +
62
+ ` - ${bundledFromDeploy}\n` +
63
+ ` - ${sourceTreeFromDeploy}\n` +
64
+ ` - ${fromCwd}\n` +
65
+ ` - ${bundledFromCwd}\n` +
66
+ `If you installed this package via npm, the data files should be bundled in dist/data/. ` +
67
+ `Run \`npm run build\` first if you're working from source.`);
68
+ }
69
+ //# sourceMappingURL=data-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-paths.js","sourceRoot":"","sources":["../../src/deploy/data-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAAC,IAA6B;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;QACvB,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEtC,qEAAqE;IACrE,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,UAAU,CAAC,gBAAgB,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAE1D,oFAAoF;IACpF,MAAM,mBAAmB,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,mBAAmB,CAAC;IAEhE,uFAAuF;IACvF,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACjE,IAAI,UAAU,CAAC,iBAAiB,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAE5D,sEAAsE;IACtE,MAAM,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,oBAAoB,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAElE,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACxC,yEAAyE;IACzE,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpE,IAAI,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,cAAc,CAAC;IAEtD,MAAM,IAAI,KAAK,CACb,oBAAoB,IAAI,4BAA4B;QAClD,OAAO,gBAAgB,IAAI;QAC3B,OAAO,mBAAmB,IAAI;QAC9B,OAAO,iBAAiB,IAAI;QAC5B,OAAO,oBAAoB,IAAI;QAC/B,OAAO,OAAO,IAAI;QAClB,OAAO,cAAc,IAAI;QACzB,yFAAyF;QACzF,4DAA4D,CAC/D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Deploy AI Coding Assistant alert conditions to a New Relic account.
3
+ *
4
+ * Exposed as the `preflight deploy-alerts` subcommand so users who
5
+ * installed via `npm install -g` can run it without cloning the repo. The
6
+ * alert policy + conditions JSON ships in `dist/data/alerts/` after build.
7
+ */
8
+ import type { AlertConditionDefinition, AlertPolicyDefinition, PersonalAlertThresholds } from '../alerts/types.js';
9
+ export declare const CREATE_POLICY_MUTATION = "\nmutation CreateAlertPolicy($accountId: Int!, $name: String!, $incidentPreference: AlertsIncidentPreference!) {\n alertsPolicyCreate(accountId: $accountId, policy: {\n name: $name\n incidentPreference: $incidentPreference\n }) {\n id\n name\n }\n}";
10
+ export declare const CREATE_NRQL_CONDITION_MUTATION = "\nmutation CreateNrqlCondition($accountId: Int!, $policyId: ID!, $condition: AlertsNrqlConditionStaticInput!) {\n alertsNrqlConditionStaticCreate(accountId: $accountId, policyId: $policyId, condition: $condition) {\n id\n name\n enabled\n }\n}";
11
+ export declare const LIST_POLICIES_QUERY = "\nquery ListPolicies($accountId: Int!, $name: String!) {\n actor {\n account(id: $accountId) {\n alerts {\n policiesSearch(searchCriteria: { name: $name }) {\n policies {\n id\n name\n }\n }\n }\n }\n }\n}";
12
+ export declare const DELETE_POLICY_MUTATION = "\nmutation DeletePolicy($accountId: Int!, $policyId: ID!) {\n alertsPolicyDelete(accountId: $accountId, id: $policyId) {\n id\n }\n}";
13
+ export declare const LIST_CONDITIONS_QUERY = "\nquery ListConditions($accountId: Int!, $policyId: ID!) {\n actor {\n account(id: $accountId) {\n alerts {\n nrqlConditionsSearch(searchCriteria: { policyId: $policyId }) {\n nrqlConditions {\n id\n name\n }\n }\n }\n }\n }\n}";
14
+ export declare const UPDATE_NRQL_CONDITION_MUTATION = "\nmutation UpdateNrqlCondition($accountId: Int!, $id: ID!, $condition: AlertsNrqlConditionUpdateStaticInput!) {\n alertsNrqlConditionStaticUpdate(accountId: $accountId, id: $id, condition: $condition) {\n id\n name\n enabled\n }\n}";
15
+ export declare const DELETE_CONDITION_MUTATION = "\nmutation DeleteCondition($accountId: Int!, $id: ID!) {\n alertsConditionDelete(accountId: $accountId, id: $id) {\n id\n }\n}";
16
+ interface OutputStream {
17
+ write: (chunk: string) => boolean | void;
18
+ }
19
+ export interface AlertsDeployOptions {
20
+ readonly dryRun: boolean;
21
+ readonly teardown: boolean;
22
+ readonly update: boolean;
23
+ readonly eu: boolean;
24
+ readonly developer: string | null;
25
+ /**
26
+ * Override the alerts data dir. Used by tests so they can point at a fixture
27
+ * directory instead of the bundled `dist/data/alerts/`.
28
+ */
29
+ readonly dataDir?: string;
30
+ /** Override the URL passed to fetch — used by tests with a mock. */
31
+ readonly nerdgraphUrlOverride?: string;
32
+ /** Injected fetch — used by tests to capture/stub HTTP calls. */
33
+ readonly fetchImpl?: typeof fetch;
34
+ /**
35
+ * Override personal thresholds. Production reads from
36
+ * `~/.newrelic-preflight/config.json`; tests inject directly.
37
+ */
38
+ readonly personalThresholdsOverride?: PersonalAlertThresholds;
39
+ /** Stream for stdout writes — defaults to process.stdout. */
40
+ readonly stdout?: OutputStream;
41
+ }
42
+ export declare function loadDefinitions(dataDir: string): {
43
+ policy: AlertPolicyDefinition;
44
+ conditions: AlertConditionDefinition[];
45
+ };
46
+ export declare function loadPersonalDefinitions(dataDir: string, developer: string, thresholds: PersonalAlertThresholds): {
47
+ policy: AlertPolicyDefinition;
48
+ conditions: AlertConditionDefinition[];
49
+ };
50
+ export declare function loadPersonalThresholds(): PersonalAlertThresholds;
51
+ export declare function buildConditionInput(cond: AlertConditionDefinition): Record<string, unknown>;
52
+ /**
53
+ * Run the deploy-alerts command. Returns the exit code (0 = success,
54
+ * non-zero = failure).
55
+ */
56
+ export declare function runDeployAlerts(opts: AlertsDeployOptions): Promise<number>;
57
+ export {};
58
+ //# sourceMappingURL=deploy-alerts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-alerts.d.ts","sourceRoot":"","sources":["../../src/deploy/deploy-alerts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAK5B,eAAO,MAAM,sBAAsB,4QASjC,CAAC;AAMH,eAAO,MAAM,8BAA8B,mQAOzC,CAAC;AAMH,eAAO,MAAM,mBAAmB,0RAc9B,CAAC;AAcH,eAAO,MAAM,sBAAsB,8IAKjC,CAAC;AAEH,eAAO,MAAM,qBAAqB,gTAchC,CAAC;AAcH,eAAO,MAAM,8BAA8B,uPAOzC,CAAC;AAMH,eAAO,MAAM,yBAAyB,wIAKpC,CAAC;AAEH,UAAU,YAAY;IACpB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,0BAA0B,CAAC,EAAE,uBAAuB,CAAC;IAC9D,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAkCD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAChD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,UAAU,EAAE,wBAAwB,EAAE,CAAC;CACxC,CAgBA;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,uBAAuB,GAClC;IAAE,MAAM,EAAE,qBAAqB,CAAC;IAAC,UAAU,EAAE,wBAAwB,EAAE,CAAA;CAAE,CAgC3E;AAED,wBAAgB,sBAAsB,IAAI,uBAAuB,CAmChE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkC3F;AAuED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0NhF"}
@@ -0,0 +1,371 @@
1
+ /**
2
+ * Deploy AI Coding Assistant alert conditions to a New Relic account.
3
+ *
4
+ * Exposed as the `preflight deploy-alerts` subcommand so users who
5
+ * installed via `npm install -g` can run it without cloning the repo. The
6
+ * alert policy + conditions JSON ships in `dist/data/alerts/` after build.
7
+ */
8
+ import { readFileSync, readdirSync } from 'node:fs';
9
+ import { resolve } from 'node:path';
10
+ import { homedir } from 'node:os';
11
+ import { DEFAULT_PERSONAL_THRESHOLDS } from '../alerts/types.js';
12
+ import { normalizeDeveloperName } from '../config.js';
13
+ import { resolveDataDir } from './data-paths.js';
14
+ export const CREATE_POLICY_MUTATION = `
15
+ mutation CreateAlertPolicy($accountId: Int!, $name: String!, $incidentPreference: AlertsIncidentPreference!) {
16
+ alertsPolicyCreate(accountId: $accountId, policy: {
17
+ name: $name
18
+ incidentPreference: $incidentPreference
19
+ }) {
20
+ id
21
+ name
22
+ }
23
+ }`;
24
+ export const CREATE_NRQL_CONDITION_MUTATION = `
25
+ mutation CreateNrqlCondition($accountId: Int!, $policyId: ID!, $condition: AlertsNrqlConditionStaticInput!) {
26
+ alertsNrqlConditionStaticCreate(accountId: $accountId, policyId: $policyId, condition: $condition) {
27
+ id
28
+ name
29
+ enabled
30
+ }
31
+ }`;
32
+ export const LIST_POLICIES_QUERY = `
33
+ query ListPolicies($accountId: Int!, $name: String!) {
34
+ actor {
35
+ account(id: $accountId) {
36
+ alerts {
37
+ policiesSearch(searchCriteria: { name: $name }) {
38
+ policies {
39
+ id
40
+ name
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }`;
47
+ export const DELETE_POLICY_MUTATION = `
48
+ mutation DeletePolicy($accountId: Int!, $policyId: ID!) {
49
+ alertsPolicyDelete(accountId: $accountId, id: $policyId) {
50
+ id
51
+ }
52
+ }`;
53
+ export const LIST_CONDITIONS_QUERY = `
54
+ query ListConditions($accountId: Int!, $policyId: ID!) {
55
+ actor {
56
+ account(id: $accountId) {
57
+ alerts {
58
+ nrqlConditionsSearch(searchCriteria: { policyId: $policyId }) {
59
+ nrqlConditions {
60
+ id
61
+ name
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }`;
68
+ export const UPDATE_NRQL_CONDITION_MUTATION = `
69
+ mutation UpdateNrqlCondition($accountId: Int!, $id: ID!, $condition: AlertsNrqlConditionUpdateStaticInput!) {
70
+ alertsNrqlConditionStaticUpdate(accountId: $accountId, id: $id, condition: $condition) {
71
+ id
72
+ name
73
+ enabled
74
+ }
75
+ }`;
76
+ export const DELETE_CONDITION_MUTATION = `
77
+ mutation DeleteCondition($accountId: Int!, $id: ID!) {
78
+ alertsConditionDelete(accountId: $accountId, id: $id) {
79
+ id
80
+ }
81
+ }`;
82
+ async function nerdgraph(apiKey, url, query, variables, fetchImpl) {
83
+ const resp = await fetchImpl(url, {
84
+ method: 'POST',
85
+ headers: {
86
+ 'Content-Type': 'application/json',
87
+ 'API-Key': apiKey,
88
+ },
89
+ body: JSON.stringify({ query, variables }),
90
+ });
91
+ if (!resp.ok) {
92
+ throw new Error(`NerdGraph HTTP ${resp.status}: ${await resp.text()}`);
93
+ }
94
+ const json = (await resp.json());
95
+ if (json.errors?.length) {
96
+ throw new Error(`NerdGraph errors: ${JSON.stringify(json.errors, null, 2)}`);
97
+ }
98
+ return json.data;
99
+ }
100
+ export function loadDefinitions(dataDir) {
101
+ const conditionsDir = resolve(dataDir, 'conditions');
102
+ const policy = JSON.parse(readFileSync(resolve(dataDir, 'policy.json'), 'utf-8'));
103
+ const conditionFiles = readdirSync(conditionsDir)
104
+ .filter((f) => f.endsWith('.json'))
105
+ .sort();
106
+ const conditions = conditionFiles.map((f) => JSON.parse(readFileSync(resolve(conditionsDir, f), 'utf-8')));
107
+ return { policy, conditions };
108
+ }
109
+ export function loadPersonalDefinitions(dataDir, developer, thresholds) {
110
+ const conditionsDir = resolve(dataDir, 'conditions-personal');
111
+ const policy = {
112
+ name: `AI Coding — Personal — ${developer}`,
113
+ incidentPreference: 'PER_CONDITION',
114
+ };
115
+ const conditionFiles = readdirSync(conditionsDir)
116
+ .filter((f) => f.endsWith('.json'))
117
+ .sort();
118
+ const thresholdMap = {
119
+ __dailyCostUsd__: thresholds.dailyCostUsd,
120
+ __sessionCostUsd__: thresholds.sessionCostUsd,
121
+ __efficiencyScoreMin__: thresholds.efficiencyScoreMin,
122
+ __stuckLoopCountMax__: thresholds.stuckLoopCountMax,
123
+ __antiPatternCountMax__: thresholds.antiPatternCountMax,
124
+ };
125
+ const conditions = conditionFiles.map((f) => {
126
+ let raw = readFileSync(resolve(conditionsDir, f), 'utf-8');
127
+ raw = raw.replaceAll('{{developer}}', developer);
128
+ for (const [placeholder, value] of Object.entries(thresholdMap)) {
129
+ raw = raw.replace(`"${placeholder}"`, String(value));
130
+ }
131
+ return JSON.parse(raw);
132
+ });
133
+ return { policy, conditions };
134
+ }
135
+ export function loadPersonalThresholds() {
136
+ const configPath = resolve(homedir(), '.newrelic-preflight', 'config.json');
137
+ try {
138
+ const file = JSON.parse(readFileSync(configPath, 'utf-8'));
139
+ const alertsSection = file.alerts;
140
+ if (typeof alertsSection !== 'object' || alertsSection === null)
141
+ return DEFAULT_PERSONAL_THRESHOLDS;
142
+ const personal = alertsSection.personal;
143
+ if (typeof personal !== 'object' || personal === null)
144
+ return DEFAULT_PERSONAL_THRESHOLDS;
145
+ const t = personal;
146
+ return {
147
+ dailyCostUsd: typeof t.dailyCostUsd === 'number'
148
+ ? t.dailyCostUsd
149
+ : DEFAULT_PERSONAL_THRESHOLDS.dailyCostUsd,
150
+ sessionCostUsd: typeof t.sessionCostUsd === 'number'
151
+ ? t.sessionCostUsd
152
+ : DEFAULT_PERSONAL_THRESHOLDS.sessionCostUsd,
153
+ efficiencyScoreMin: typeof t.efficiencyScoreMin === 'number'
154
+ ? t.efficiencyScoreMin
155
+ : DEFAULT_PERSONAL_THRESHOLDS.efficiencyScoreMin,
156
+ stuckLoopCountMax: typeof t.stuckLoopCountMax === 'number'
157
+ ? t.stuckLoopCountMax
158
+ : DEFAULT_PERSONAL_THRESHOLDS.stuckLoopCountMax,
159
+ antiPatternCountMax: typeof t.antiPatternCountMax === 'number'
160
+ ? t.antiPatternCountMax
161
+ : DEFAULT_PERSONAL_THRESHOLDS.antiPatternCountMax,
162
+ };
163
+ }
164
+ catch {
165
+ return DEFAULT_PERSONAL_THRESHOLDS;
166
+ }
167
+ }
168
+ export function buildConditionInput(cond) {
169
+ return {
170
+ name: cond.name,
171
+ description: cond.description,
172
+ enabled: cond.enabled,
173
+ nrql: { query: cond.nrqlQuery },
174
+ signal: {
175
+ aggregationMethod: cond.aggregationMethod,
176
+ aggregationWindow: cond.aggregationWindow,
177
+ ...(cond.aggregationDelay !== undefined ? { aggregationDelay: cond.aggregationDelay } : {}),
178
+ ...(cond.aggregationTimer !== undefined ? { aggregationTimer: cond.aggregationTimer } : {}),
179
+ },
180
+ terms: [
181
+ {
182
+ threshold: cond.thresholdCritical.value,
183
+ thresholdDuration: cond.thresholdCritical.duration,
184
+ thresholdOccurrences: cond.thresholdCritical.occurrences,
185
+ operator: cond.thresholdOperator,
186
+ priority: 'CRITICAL',
187
+ },
188
+ ...(cond.thresholdWarning
189
+ ? [
190
+ {
191
+ threshold: cond.thresholdWarning.value,
192
+ thresholdDuration: cond.thresholdWarning.duration,
193
+ thresholdOccurrences: cond.thresholdWarning.occurrences,
194
+ operator: cond.thresholdOperator,
195
+ priority: 'WARNING',
196
+ },
197
+ ]
198
+ : []),
199
+ ],
200
+ violationTimeLimitSeconds: cond.violationTimeLimitSeconds,
201
+ };
202
+ }
203
+ async function syncConditions(apiKey, url, accountId, policyId, localConditions, fetchImpl, out) {
204
+ const listResult = await nerdgraph(apiKey, url, LIST_CONDITIONS_QUERY, { accountId, policyId }, fetchImpl);
205
+ const remoteConditions = listResult.actor.account.alerts.nrqlConditionsSearch.nrqlConditions;
206
+ const remoteByName = new Map(remoteConditions.map((c) => [c.name, c]));
207
+ const localNames = new Set(localConditions.map((c) => c.name));
208
+ for (const cond of localConditions) {
209
+ const existing = remoteByName.get(cond.name);
210
+ if (existing) {
211
+ out.write(` Updating condition "${cond.name}" (id: ${existing.id})...\n`);
212
+ const result = await nerdgraph(apiKey, url, UPDATE_NRQL_CONDITION_MUTATION, { accountId, id: existing.id, condition: buildConditionInput(cond) }, fetchImpl);
213
+ const updated = result.alertsNrqlConditionStaticUpdate;
214
+ const status = updated.enabled ? 'enabled' : 'disabled';
215
+ out.write(` -> Updated (${status})\n`);
216
+ }
217
+ else {
218
+ out.write(` Creating condition "${cond.name}"...\n`);
219
+ const result = await nerdgraph(apiKey, url, CREATE_NRQL_CONDITION_MUTATION, { accountId, policyId, condition: buildConditionInput(cond) }, fetchImpl);
220
+ const created = result.alertsNrqlConditionStaticCreate;
221
+ const status = created.enabled ? 'enabled' : 'disabled';
222
+ out.write(` -> Created (${status})\n`);
223
+ }
224
+ }
225
+ for (const remote of remoteConditions) {
226
+ if (!localNames.has(remote.name)) {
227
+ await nerdgraph(apiKey, url, DELETE_CONDITION_MUTATION, { accountId, id: remote.id }, fetchImpl);
228
+ out.write(` Deleted obsolete condition "${remote.name}" (id: ${remote.id})\n`);
229
+ }
230
+ }
231
+ }
232
+ function pickNerdgraphUrl(opts) {
233
+ if (opts.nerdgraphUrlOverride)
234
+ return opts.nerdgraphUrlOverride;
235
+ if (opts.eu)
236
+ return 'https://api.eu.newrelic.com/graphql';
237
+ return 'https://api.newrelic.com/graphql';
238
+ }
239
+ /**
240
+ * Run the deploy-alerts command. Returns the exit code (0 = success,
241
+ * non-zero = failure).
242
+ */
243
+ export async function runDeployAlerts(opts) {
244
+ const out = opts.stdout ?? process.stdout;
245
+ const fetchImpl = opts.fetchImpl ?? fetch;
246
+ if ([opts.dryRun, opts.teardown, opts.update].filter(Boolean).length > 1) {
247
+ out.write('Error: --dry-run, --teardown, and --update are mutually exclusive.\n');
248
+ return 1;
249
+ }
250
+ if (opts.eu) {
251
+ out.write('Targeting EU API: https://api.eu.newrelic.com/graphql\n');
252
+ }
253
+ const developer = opts.developer ? normalizeDeveloperName(opts.developer) : null;
254
+ const accountIdStr = process.env.NEW_RELIC_ACCOUNT_ID;
255
+ if (!accountIdStr) {
256
+ out.write('Error: NEW_RELIC_ACCOUNT_ID environment variable is required.\n');
257
+ return 1;
258
+ }
259
+ const accountId = parseInt(accountIdStr, 10);
260
+ if (Number.isNaN(accountId) || accountId <= 0 || String(accountId) !== accountIdStr.trim()) {
261
+ out.write(`Error: NEW_RELIC_ACCOUNT_ID must be a positive integer. Got: "${accountIdStr}"\n`);
262
+ return 1;
263
+ }
264
+ const dataDir = opts.dataDir ?? resolveDataDir('alerts');
265
+ const url = pickNerdgraphUrl(opts);
266
+ const personalThresholds = opts.personalThresholdsOverride ?? loadPersonalThresholds();
267
+ if (opts.dryRun) {
268
+ if (developer) {
269
+ const { policy, conditions } = loadPersonalDefinitions(dataDir, developer, personalThresholds);
270
+ out.write(`--- Dry run: personal policy for ${developer} ---\n`);
271
+ out.write(`${JSON.stringify(policy, null, 2)}\n`);
272
+ out.write(`--- Would create ${conditions.length} personal conditions ---\n`);
273
+ for (const c of conditions) {
274
+ out.write(` [${c.enabled ? 'enabled' : 'disabled'}] ${c.name}\n`);
275
+ }
276
+ }
277
+ else {
278
+ const { policy, conditions } = loadDefinitions(dataDir);
279
+ out.write('--- Dry run: would create policy ---\n');
280
+ out.write(`${JSON.stringify(policy, null, 2)}\n`);
281
+ out.write(`--- Would create ${conditions.length} conditions ---\n`);
282
+ for (const c of conditions) {
283
+ out.write(` [${c.enabled ? 'enabled' : 'disabled'}] ${c.name}\n`);
284
+ }
285
+ }
286
+ return 0;
287
+ }
288
+ const apiKey = process.env.NEW_RELIC_API_KEY;
289
+ if (!apiKey) {
290
+ out.write('Error: NEW_RELIC_API_KEY environment variable is required (User API key, not license key).\n');
291
+ return 1;
292
+ }
293
+ try {
294
+ if (opts.teardown) {
295
+ const policyName = developer
296
+ ? `AI Coding — Personal — ${developer}`
297
+ : loadDefinitions(dataDir).policy.name;
298
+ const listResult = await nerdgraph(apiKey, url, LIST_POLICIES_QUERY, { accountId, name: policyName }, fetchImpl);
299
+ const existing = listResult.actor.account.alerts.policiesSearch.policies;
300
+ if (existing.length === 0) {
301
+ out.write(`No policy named "${policyName}" found. Nothing to delete.\n`);
302
+ return 0;
303
+ }
304
+ for (const p of existing) {
305
+ await nerdgraph(apiKey, url, DELETE_POLICY_MUTATION, { accountId, policyId: p.id }, fetchImpl);
306
+ out.write(`Deleted policy "${p.name}" (id: ${p.id})\n`);
307
+ }
308
+ return 0;
309
+ }
310
+ if (opts.update) {
311
+ const { policy, conditions } = developer
312
+ ? loadPersonalDefinitions(dataDir, developer, personalThresholds)
313
+ : loadDefinitions(dataDir);
314
+ const listResult = await nerdgraph(apiKey, url, LIST_POLICIES_QUERY, { accountId, name: policy.name }, fetchImpl);
315
+ const existing = listResult.actor.account.alerts.policiesSearch.policies;
316
+ if (existing.length === 0) {
317
+ out.write(`Error: No policy named "${policy.name}" found. Use deploy (without --update) to create it.\n`);
318
+ return 1;
319
+ }
320
+ const policyId = existing[0].id;
321
+ out.write(`Syncing conditions on policy "${policy.name}" (id: ${policyId})...\n`);
322
+ await syncConditions(apiKey, url, accountId, policyId, conditions, fetchImpl, out);
323
+ out.write('\nDone. Tip: --update only syncs conditions. Policy name and incidentPreference changes still require --teardown then re-deploy.\n');
324
+ return 0;
325
+ }
326
+ if (developer) {
327
+ const { policy, conditions } = loadPersonalDefinitions(dataDir, developer, personalThresholds);
328
+ const listResult = await nerdgraph(apiKey, url, LIST_POLICIES_QUERY, { accountId, name: policy.name }, fetchImpl);
329
+ if (listResult.actor.account.alerts.policiesSearch.policies.length > 0) {
330
+ const existing = listResult.actor.account.alerts.policiesSearch.policies[0];
331
+ out.write(`Personal policy for "${developer}" already exists (id: ${existing.id}). Use --teardown to reset.\n`);
332
+ return 0;
333
+ }
334
+ const createResult = await nerdgraph(apiKey, url, CREATE_POLICY_MUTATION, { accountId, name: policy.name, incidentPreference: policy.incidentPreference }, fetchImpl);
335
+ const policyId = createResult.alertsPolicyCreate.id;
336
+ out.write(`Created personal policy "${policy.name}" (id: ${policyId})\n`);
337
+ for (const cond of conditions) {
338
+ const result = await nerdgraph(apiKey, url, CREATE_NRQL_CONDITION_MUTATION, { accountId, policyId, condition: buildConditionInput(cond) }, fetchImpl);
339
+ const created = result.alertsNrqlConditionStaticCreate;
340
+ out.write(` Created condition "${created.name}" (${created.enabled ? 'enabled' : 'disabled'})\n`);
341
+ }
342
+ return 0;
343
+ }
344
+ // Team policy deployment
345
+ const { policy, conditions } = loadDefinitions(dataDir);
346
+ const listResult = await nerdgraph(apiKey, url, LIST_POLICIES_QUERY, { accountId, name: policy.name }, fetchImpl);
347
+ const existing = listResult.actor.account.alerts.policiesSearch.policies;
348
+ if (existing.length > 0) {
349
+ const policyId = existing[0].id;
350
+ out.write(`Policy "${policy.name}" already exists (id: ${policyId}). Skipping creation.\n`);
351
+ out.write('Tip: run with --teardown to delete it first, then re-deploy.\n');
352
+ return 0;
353
+ }
354
+ const createPolicyResult = await nerdgraph(apiKey, url, CREATE_POLICY_MUTATION, { accountId, name: policy.name, incidentPreference: policy.incidentPreference }, fetchImpl);
355
+ const policyId = createPolicyResult.alertsPolicyCreate.id;
356
+ out.write(`Created policy "${policy.name}" (id: ${policyId})\n`);
357
+ for (const cond of conditions) {
358
+ const result = await nerdgraph(apiKey, url, CREATE_NRQL_CONDITION_MUTATION, { accountId, policyId, condition: buildConditionInput(cond) }, fetchImpl);
359
+ const created = result.alertsNrqlConditionStaticCreate;
360
+ const status = created.enabled ? 'enabled' : 'disabled';
361
+ out.write(` Created condition "${created.name}" (${status})\n`);
362
+ }
363
+ out.write('\nDone. Tip: adjust threshold values in alerts/conditions/ to match your usage.\n');
364
+ return 0;
365
+ }
366
+ catch (err) {
367
+ out.write(`\nFatal: ${err instanceof Error ? err.message : String(err)}\n`);
368
+ return 1;
369
+ }
370
+ }
371
+ //# sourceMappingURL=deploy-alerts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-alerts.js","sourceRoot":"","sources":["../../src/deploy/deploy-alerts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOlC,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;EASpC,CAAC;AAMH,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;;EAO5C,CAAC;AAMH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;EAcjC,CAAC;AAcH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;EAKpC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;EAcnC,CAAC;AAcH,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;;EAO5C,CAAC;AAMH,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;EAKvC,CAAC;AA8BH,KAAK,UAAU,SAAS,CACtB,MAAc,EACd,GAAW,EACX,KAAa,EACb,SAAkC,EAClC,SAAuB;IAEvB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,SAAS,EAAE,MAAM;SAClB;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;KAC3C,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAO9B,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,IAAI,CAAC,IAAS,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAI7C,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAErD,MAAM,MAAM,GAA0B,IAAI,CAAC,KAAK,CAC9C,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CACvD,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC;SAC9C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAClC,IAAI,EAAE,CAAC;IAEV,MAAM,UAAU,GAA+B,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACtE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAC7D,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,OAAe,EACf,SAAiB,EACjB,UAAmC;IAEnC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IAE9D,MAAM,MAAM,GAA0B;QACpC,IAAI,EAAE,0BAA0B,SAAS,EAAE;QAC3C,kBAAkB,EAAE,eAAe;KACpC,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC;SAC9C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAClC,IAAI,EAAE,CAAC;IAEV,MAAM,YAAY,GAA2B;QAC3C,gBAAgB,EAAE,UAAU,CAAC,YAAY;QACzC,kBAAkB,EAAE,UAAU,CAAC,cAAc;QAC7C,sBAAsB,EAAE,UAAU,CAAC,kBAAkB;QACrD,qBAAqB,EAAE,UAAU,CAAC,iBAAiB;QACnD,uBAAuB,EAAE,UAAU,CAAC,mBAAmB;KACxD,CAAC;IAEF,MAAM,UAAU,GAA+B,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACtE,IAAI,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAE3D,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAChE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,WAAW,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA6B,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,aAAa,CAAC,CAAC;IAC5E,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAA4B,CAAC;QACtF,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QAClC,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,IAAI;YAC7D,OAAO,2BAA2B,CAAC;QACrC,MAAM,QAAQ,GAAI,aAAyC,CAAC,QAAQ,CAAC;QACrE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,2BAA2B,CAAC;QAC1F,MAAM,CAAC,GAAG,QAAmC,CAAC;QAC9C,OAAO;YACL,YAAY,EACV,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ;gBAChC,CAAC,CAAC,CAAC,CAAC,YAAY;gBAChB,CAAC,CAAC,2BAA2B,CAAC,YAAY;YAC9C,cAAc,EACZ,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ;gBAClC,CAAC,CAAC,CAAC,CAAC,cAAc;gBAClB,CAAC,CAAC,2BAA2B,CAAC,cAAc;YAChD,kBAAkB,EAChB,OAAO,CAAC,CAAC,kBAAkB,KAAK,QAAQ;gBACtC,CAAC,CAAC,CAAC,CAAC,kBAAkB;gBACtB,CAAC,CAAC,2BAA2B,CAAC,kBAAkB;YACpD,iBAAiB,EACf,OAAO,CAAC,CAAC,iBAAiB,KAAK,QAAQ;gBACrC,CAAC,CAAC,CAAC,CAAC,iBAAiB;gBACrB,CAAC,CAAC,2BAA2B,CAAC,iBAAiB;YACnD,mBAAmB,EACjB,OAAO,CAAC,CAAC,mBAAmB,KAAK,QAAQ;gBACvC,CAAC,CAAC,CAAC,CAAC,mBAAmB;gBACvB,CAAC,CAAC,2BAA2B,CAAC,mBAAmB;SACtD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,2BAA2B,CAAC;IACrC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAA8B;IAChE,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;QAC/B,MAAM,EAAE;YACN,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5F;QACD,KAAK,EAAE;YACL;gBACE,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK;gBACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ;gBAClD,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW;gBACxD,QAAQ,EAAE,IAAI,CAAC,iBAAiB;gBAChC,QAAQ,EAAE,UAAU;aACrB;YACD,GAAG,CAAC,IAAI,CAAC,gBAAgB;gBACvB,CAAC,CAAC;oBACE;wBACE,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK;wBACtC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ;wBACjD,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW;wBACvD,QAAQ,EAAE,IAAI,CAAC,iBAAiB;wBAChC,QAAQ,EAAE,SAAS;qBACpB;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;QACD,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;KAC1D,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAAc,EACd,GAAW,EACX,SAAiB,EACjB,QAAgB,EAChB,eAA2C,EAC3C,SAAuB,EACvB,GAAiB;IAEjB,MAAM,UAAU,GAAG,MAAM,SAAS,CAChC,MAAM,EACN,GAAG,EACH,qBAAqB,EACrB,EAAE,SAAS,EAAE,QAAQ,EAAE,EACvB,SAAS,CACV,CAAC;IACF,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC;IAC7F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/D,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,IAAI,UAAU,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,MAAM,EACN,GAAG,EACH,8BAA8B,EAC9B,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,EACpE,SAAS,CACV,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,+BAA+B,CAAC;YACvD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YACxD,GAAG,CAAC,KAAK,CAAC,mBAAmB,MAAM,KAAK,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,MAAM,EACN,GAAG,EACH,8BAA8B,EAC9B,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAC7D,SAAS,CACV,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,+BAA+B,CAAC;YACvD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YACxD,GAAG,CAAC,KAAK,CAAC,mBAAmB,MAAM,KAAK,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,SAAS,CACb,MAAM,EACN,GAAG,EACH,yBAAyB,EACzB,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAC5B,SAAS,CACV,CAAC;YACF,GAAG,CAAC,KAAK,CAAC,iCAAiC,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAyB;IACjD,IAAI,IAAI,CAAC,oBAAoB;QAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC;IAChE,IAAI,IAAI,CAAC,EAAE;QAAE,OAAO,qCAAqC,CAAC;IAC1D,OAAO,kCAAkC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAyB;IAC7D,MAAM,GAAG,GAAiB,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IACxD,MAAM,SAAS,GAAiB,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAExD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAClF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACZ,GAAG,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,SAAS,GAAkB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhG,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACtD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QAC7E,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3F,GAAG,CAAC,KAAK,CAAC,iEAAiE,YAAY,KAAK,CAAC,CAAC;QAC9F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,kBAAkB,GAAG,IAAI,CAAC,0BAA0B,IAAI,sBAAsB,EAAE,CAAC;IAEvF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,uBAAuB,CACpD,OAAO,EACP,SAAS,EACT,kBAAkB,CACnB,CAAC;YACF,GAAG,CAAC,KAAK,CAAC,oCAAoC,SAAS,QAAQ,CAAC,CAAC;YACjE,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAClD,GAAG,CAAC,KAAK,CAAC,oBAAoB,UAAU,CAAC,MAAM,4BAA4B,CAAC,CAAC;YAC7E,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YACxD,GAAG,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACpD,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAClD,GAAG,CAAC,KAAK,CAAC,oBAAoB,UAAU,CAAC,MAAM,mBAAmB,CAAC,CAAC;YACpE,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC,KAAK,CACP,8FAA8F,CAC/F,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,UAAU,GAAG,SAAS;gBAC1B,CAAC,CAAC,0BAA0B,SAAS,EAAE;gBACvC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YAEzC,MAAM,UAAU,GAAG,MAAM,SAAS,CAChC,MAAM,EACN,GAAG,EACH,mBAAmB,EACnB,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,EAC/B,SAAS,CACV,CAAC;YACF,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;YACzE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,GAAG,CAAC,KAAK,CAAC,oBAAoB,UAAU,+BAA+B,CAAC,CAAC;gBACzE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,SAAS,CACb,MAAM,EACN,GAAG,EACH,sBAAsB,EACtB,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAC7B,SAAS,CACV,CAAC;gBACF,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS;gBACtC,CAAC,CAAC,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,kBAAkB,CAAC;gBACjE,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7B,MAAM,UAAU,GAAG,MAAM,SAAS,CAChC,MAAM,EACN,GAAG,EACH,mBAAmB,EACnB,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAChC,SAAS,CACV,CAAC;YACF,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;YACzE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,GAAG,CAAC,KAAK,CACP,2BAA2B,MAAM,CAAC,IAAI,wDAAwD,CAC/F,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,GAAG,CAAC,KAAK,CAAC,iCAAiC,MAAM,CAAC,IAAI,UAAU,QAAQ,QAAQ,CAAC,CAAC;YAClF,MAAM,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YACnF,GAAG,CAAC,KAAK,CACP,oIAAoI,CACrI,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,uBAAuB,CACpD,OAAO,EACP,SAAS,EACT,kBAAkB,CACnB,CAAC;YAEF,MAAM,UAAU,GAAG,MAAM,SAAS,CAChC,MAAM,EACN,GAAG,EACH,mBAAmB,EACnB,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAChC,SAAS,CACV,CAAC;YACF,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC5E,GAAG,CAAC,KAAK,CACP,wBAAwB,SAAS,yBAAyB,QAAQ,CAAC,EAAE,+BAA+B,CACrG,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,SAAS,CAClC,MAAM,EACN,GAAG,EACH,sBAAsB,EACtB,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,EAC/E,SAAS,CACV,CAAC;YACF,MAAM,QAAQ,GAAG,YAAY,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,IAAI,UAAU,QAAQ,KAAK,CAAC,CAAC;YAE1E,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,MAAM,EACN,GAAG,EACH,8BAA8B,EAC9B,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAC7D,SAAS,CACV,CAAC;gBACF,MAAM,OAAO,GAAG,MAAM,CAAC,+BAA+B,CAAC;gBACvD,GAAG,CAAC,KAAK,CACP,wBAAwB,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,KAAK,CACxF,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,yBAAyB;QACzB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAExD,MAAM,UAAU,GAAG,MAAM,SAAS,CAChC,MAAM,EACN,GAAG,EACH,mBAAmB,EACnB,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAChC,SAAS,CACV,CAAC;QACF,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;QAEzE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,GAAG,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,IAAI,yBAAyB,QAAQ,yBAAyB,CAAC,CAAC;YAC5F,GAAG,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;YAC5E,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,SAAS,CACxC,MAAM,EACN,GAAG,EACH,sBAAsB,EACtB,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,EAC/E,SAAS,CACV,CAAC;QACF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,IAAI,UAAU,QAAQ,KAAK,CAAC,CAAC;QAEjE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,MAAM,EACN,GAAG,EACH,8BAA8B,EAC9B,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAC7D,SAAS,CACV,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,+BAA+B,CAAC;YACvD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YACxD,GAAG,CAAC,KAAK,CAAC,wBAAwB,OAAO,CAAC,IAAI,MAAM,MAAM,KAAK,CAAC,CAAC;QACnE,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC;QAC/F,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5E,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Deploy AI Coding Assistant dashboards to a New Relic account.
3
+ *
4
+ * Exposed as the `preflight deploy-dashboards` subcommand so users who
5
+ * installed via `npm install -g` can run it without cloning the repo. The
6
+ * dashboard JSON definitions are bundled into `dist/data/dashboards/` at build
7
+ * time (see `package.json:build:server`).
8
+ */
9
+ export declare const CREATE_MUTATION = "\nmutation DashboardCreate($accountId: Int!, $dashboard: DashboardInput!) {\n dashboardCreate(accountId: $accountId, dashboard: $dashboard) {\n entityResult {\n guid\n name\n }\n errors {\n description\n type\n }\n }\n}";
10
+ export declare const UPDATE_MUTATION = "\nmutation DashboardUpdate($guid: EntityGuid!, $dashboard: DashboardInput!) {\n dashboardUpdate(guid: $guid, dashboard: $dashboard) {\n entityResult {\n guid\n name\n }\n errors {\n description\n type\n }\n }\n}";
11
+ export declare const DELETE_MUTATION = "\nmutation DashboardDelete($guid: EntityGuid!) {\n dashboardDelete(guid: $guid) {\n status\n errors {\n description\n type\n }\n }\n}";
12
+ export declare const FIND_DASHBOARD_QUERY = "\nquery FindDashboard($query: String!) {\n actor {\n entitySearch(query: $query) {\n results {\n entities {\n guid\n name\n }\n }\n }\n }\n}";
13
+ interface DashboardVariable {
14
+ name: string;
15
+ type: string;
16
+ nrqlQuery?: {
17
+ accountIds: number[];
18
+ query: string;
19
+ };
20
+ defaultValues?: Array<{
21
+ value: {
22
+ string: string;
23
+ };
24
+ }>;
25
+ [key: string]: unknown;
26
+ }
27
+ interface DashboardJson {
28
+ name: string;
29
+ description?: string;
30
+ permissions?: string;
31
+ variables?: DashboardVariable[];
32
+ pages: Array<{
33
+ name: string;
34
+ description?: string;
35
+ widgets: Array<{
36
+ title: string;
37
+ layout: {
38
+ column: number;
39
+ row: number;
40
+ width: number;
41
+ height: number;
42
+ };
43
+ visualization: {
44
+ id: string;
45
+ };
46
+ rawConfiguration: {
47
+ nrqlQueries: Array<{
48
+ accountIds: number[];
49
+ query: string;
50
+ }>;
51
+ [key: string]: unknown;
52
+ };
53
+ }>;
54
+ }>;
55
+ }
56
+ export interface DashboardDeployOptions {
57
+ readonly all: boolean;
58
+ readonly update: boolean;
59
+ readonly teardown: boolean;
60
+ readonly print: boolean;
61
+ readonly eu: boolean;
62
+ readonly developer: string | null;
63
+ readonly file: string | null;
64
+ /**
65
+ * Override the dashboards data dir. Used by tests so they can point at a
66
+ * fixture directory instead of the bundled `dist/data/dashboards/`.
67
+ */
68
+ readonly dataDir?: string;
69
+ /** Override the URL passed to fetch — used by tests with a mock. */
70
+ readonly nerdgraphUrlOverride?: string;
71
+ /** Injected fetch — used by tests to capture/stub HTTP calls. */
72
+ readonly fetchImpl?: typeof fetch;
73
+ /** Stream for stdout writes — defaults to process.stdout. */
74
+ readonly stdout?: {
75
+ write: (chunk: string) => boolean | void;
76
+ };
77
+ }
78
+ export declare function injectAccountId(dashboard: DashboardJson, accountId: number): DashboardJson;
79
+ export declare function injectDeveloperDefault(dashboard: DashboardJson, developer: string): void;
80
+ /** Escape a string for use in a Lucene query value (single-quoted). */
81
+ export declare function escapeLuceneValue(s: string): string;
82
+ /**
83
+ * Run the deploy-dashboards command. Returns the exit code (0 = success,
84
+ * non-zero = failure). Side effects: writes progress to stdout, makes HTTP
85
+ * requests to NR's NerdGraph API.
86
+ *
87
+ * Reads `NEW_RELIC_API_KEY` and `NEW_RELIC_ACCOUNT_ID` from the environment
88
+ * (mandatory for non-print modes; print mode only requires accountId).
89
+ */
90
+ export declare function runDeployDashboards(opts: DashboardDeployOptions): Promise<number>;
91
+ export {};
92
+ //# sourceMappingURL=deploy-dashboards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-dashboards.d.ts","sourceRoot":"","sources":["../../src/deploy/deploy-dashboards.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,eAAO,MAAM,eAAe,kQAY1B,CAAC;AAEH,eAAO,MAAM,eAAe,0PAY1B,CAAC;AAEH,eAAO,MAAM,eAAe,+JAS1B,CAAC;AAEH,eAAO,MAAM,oBAAoB,mMAY/B,CAAC;AAEH,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IACrD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,KAAK,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,GAAG,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC;YACvE,aAAa,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAA;aAAE,CAAC;YAC9B,gBAAgB,EAAE;gBAChB,WAAW,EAAE,KAAK,CAAC;oBAAE,UAAU,EAAE,MAAM,EAAE,CAAC;oBAAC,KAAK,EAAE,MAAM,CAAA;iBAAE,CAAC,CAAC;gBAC5D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aACxB,CAAC;SACH,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAClC,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;CAChE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CAe1F;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAQxF;AAgCD,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAkLD;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgGvF"}