@intentius/chant-lexicon-grafana 0.98.0 → 0.100.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 (532) hide show
  1. package/README.md +24 -8
  2. package/dist/actions/grafana.d.ts +24 -0
  3. package/dist/actions/grafana.d.ts.map +1 -0
  4. package/dist/actions/index.d.ts +2 -0
  5. package/dist/actions/index.d.ts.map +1 -0
  6. package/dist/alerting-build.d.ts +128 -0
  7. package/dist/alerting-build.d.ts.map +1 -0
  8. package/dist/alerting.d.ts +273 -0
  9. package/dist/alerting.d.ts.map +1 -0
  10. package/dist/annotations.d.ts +61 -0
  11. package/dist/annotations.d.ts.map +1 -0
  12. package/dist/api/apply.d.ts +160 -0
  13. package/dist/api/apply.d.ts.map +1 -0
  14. package/dist/api/bind.d.ts +32 -0
  15. package/dist/api/bind.d.ts.map +1 -0
  16. package/dist/api/client.d.ts +76 -0
  17. package/dist/api/client.d.ts.map +1 -0
  18. package/dist/api/converge.d.ts +33 -0
  19. package/dist/api/converge.d.ts.map +1 -0
  20. package/dist/api/dashboards.d.ts +102 -0
  21. package/dist/api/dashboards.d.ts.map +1 -0
  22. package/dist/api/datasources.d.ts +26 -0
  23. package/dist/api/datasources.d.ts.map +1 -0
  24. package/dist/api/fake-grafana-writes.d.ts +41 -0
  25. package/dist/api/fake-grafana-writes.d.ts.map +1 -0
  26. package/dist/api/fake-grafana.d.ts +63 -0
  27. package/dist/api/fake-grafana.d.ts.map +1 -0
  28. package/dist/api/folders.d.ts +146 -0
  29. package/dist/api/folders.d.ts.map +1 -0
  30. package/dist/api/library-panels.d.ts +52 -0
  31. package/dist/api/library-panels.d.ts.map +1 -0
  32. package/dist/build.d.ts +55 -6
  33. package/dist/build.d.ts.map +1 -1
  34. package/dist/catalog.d.ts +1 -1
  35. package/dist/catalog.d.ts.map +1 -1
  36. package/dist/codegen/docs.d.ts.map +1 -1
  37. package/dist/codegen/generate.d.ts +7 -1
  38. package/dist/codegen/generate.d.ts.map +1 -1
  39. package/dist/codegen/schema-types.d.ts +3 -3
  40. package/dist/codegen/schema-types.d.ts.map +1 -1
  41. package/dist/composites/agent-dashboard.d.ts.map +1 -1
  42. package/dist/composites/catalog.d.ts.map +1 -1
  43. package/dist/composites/index.d.ts +4 -2
  44. package/dist/composites/index.d.ts.map +1 -1
  45. package/dist/composites/red-dashboard.d.ts +21 -2
  46. package/dist/composites/red-dashboard.d.ts.map +1 -1
  47. package/dist/composites/shared.d.ts +11 -3
  48. package/dist/composites/shared.d.ts.map +1 -1
  49. package/dist/composites/slo-alert-rules.d.ts +92 -0
  50. package/dist/composites/slo-alert-rules.d.ts.map +1 -0
  51. package/dist/config.d.ts +111 -0
  52. package/dist/config.d.ts.map +1 -0
  53. package/dist/contact-point-secrets.d.ts +17 -0
  54. package/dist/contact-point-secrets.d.ts.map +1 -0
  55. package/dist/dashboard.d.ts +51 -9
  56. package/dist/dashboard.d.ts.map +1 -1
  57. package/dist/datasource-refs.d.ts +99 -0
  58. package/dist/datasource-refs.d.ts.map +1 -0
  59. package/dist/datasource-settings.d.ts +834 -0
  60. package/dist/datasource-settings.d.ts.map +1 -0
  61. package/dist/datasource.d.ts +82 -11
  62. package/dist/datasource.d.ts.map +1 -1
  63. package/dist/deep-observe-hooks.d.ts +64 -0
  64. package/dist/deep-observe-hooks.d.ts.map +1 -0
  65. package/dist/deep-observe.d.ts +47 -0
  66. package/dist/deep-observe.d.ts.map +1 -0
  67. package/dist/describe-resources.d.ts +50 -0
  68. package/dist/describe-resources.d.ts.map +1 -0
  69. package/dist/detect.d.ts +32 -3
  70. package/dist/detect.d.ts.map +1 -1
  71. package/dist/export-resources.d.ts +38 -0
  72. package/dist/export-resources.d.ts.map +1 -0
  73. package/dist/folder.d.ts +68 -0
  74. package/dist/folder.d.ts.map +1 -0
  75. package/dist/import/alerting.d.ts +40 -0
  76. package/dist/import/alerting.d.ts.map +1 -0
  77. package/dist/import/edits.d.ts +47 -0
  78. package/dist/import/edits.d.ts.map +1 -0
  79. package/dist/import/embedded.d.ts +14 -0
  80. package/dist/import/embedded.d.ts.map +1 -0
  81. package/dist/import/generator.d.ts +60 -0
  82. package/dist/import/generator.d.ts.map +1 -0
  83. package/dist/import/live-export.d.ts +108 -0
  84. package/dist/import/live-export.d.ts.map +1 -0
  85. package/dist/import/mappings.d.ts +89 -0
  86. package/dist/import/mappings.d.ts.map +1 -0
  87. package/dist/import/model.d.ts +105 -0
  88. package/dist/import/model.d.ts.map +1 -0
  89. package/dist/import/normalize-alerting.d.ts +26 -0
  90. package/dist/import/normalize-alerting.d.ts.map +1 -0
  91. package/dist/import/normalize.d.ts +74 -0
  92. package/dist/import/normalize.d.ts.map +1 -0
  93. package/dist/import/parser.d.ts +125 -0
  94. package/dist/import/parser.d.ts.map +1 -0
  95. package/dist/import/report.d.ts +26 -0
  96. package/dist/import/report.d.ts.map +1 -0
  97. package/dist/import/testdata/fixtures.d.ts +41 -0
  98. package/dist/import/testdata/fixtures.d.ts.map +1 -0
  99. package/dist/import/v2.d.ts +73 -0
  100. package/dist/import/v2.d.ts.map +1 -0
  101. package/dist/index.d.ts +31 -12
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/init-templates.d.ts +27 -0
  104. package/dist/init-templates.d.ts.map +1 -0
  105. package/dist/integrity.json +22 -12
  106. package/dist/k8s.d.ts +107 -0
  107. package/dist/k8s.d.ts.map +1 -0
  108. package/dist/lint/audit-catalog.d.ts +2 -1
  109. package/dist/lint/audit-catalog.d.ts.map +1 -1
  110. package/dist/lint/post-synth/graf101.d.ts +2 -2
  111. package/dist/lint/post-synth/graf102.d.ts +1 -1
  112. package/dist/lint/post-synth/graf104.d.ts +2 -2
  113. package/dist/lint/post-synth/graf106.d.ts +2 -2
  114. package/dist/lint/post-synth/graf107.d.ts +1 -1
  115. package/dist/lint/post-synth/graf108.d.ts +8 -0
  116. package/dist/lint/post-synth/graf108.d.ts.map +1 -0
  117. package/dist/lint/post-synth/graf109.d.ts +8 -0
  118. package/dist/lint/post-synth/graf109.d.ts.map +1 -0
  119. package/dist/lint/post-synth/graf110.d.ts +8 -0
  120. package/dist/lint/post-synth/graf110.d.ts.map +1 -0
  121. package/dist/lint/post-synth/graf111.d.ts +8 -0
  122. package/dist/lint/post-synth/graf111.d.ts.map +1 -0
  123. package/dist/lint/post-synth/graf112.d.ts +8 -0
  124. package/dist/lint/post-synth/graf112.d.ts.map +1 -0
  125. package/dist/lint/post-synth/graf113.d.ts +8 -0
  126. package/dist/lint/post-synth/graf113.d.ts.map +1 -0
  127. package/dist/lint/post-synth/graf114.d.ts +8 -0
  128. package/dist/lint/post-synth/graf114.d.ts.map +1 -0
  129. package/dist/lint/post-synth/graf115.d.ts +8 -0
  130. package/dist/lint/post-synth/graf115.d.ts.map +1 -0
  131. package/dist/lint/post-synth/grafana-helpers.d.ts +7 -5
  132. package/dist/lint/post-synth/grafana-helpers.d.ts.map +1 -1
  133. package/dist/lint/post-synth/index.d.ts.map +1 -1
  134. package/dist/lint/rules/literal-secret.d.ts +7 -3
  135. package/dist/lint/rules/literal-secret.d.ts.map +1 -1
  136. package/dist/lsp/hover.d.ts.map +1 -1
  137. package/dist/manifest.json +1 -1
  138. package/dist/members.d.ts +27 -0
  139. package/dist/members.d.ts.map +1 -0
  140. package/dist/meta.json +205 -0
  141. package/dist/okf/index.md +53 -4
  142. package/dist/okf/rules/GRAF002.md +3 -2
  143. package/dist/okf/rules/GRAF101.md +3 -2
  144. package/dist/okf/rules/GRAF102.md +1 -0
  145. package/dist/okf/rules/GRAF104.md +2 -2
  146. package/dist/okf/rules/GRAF106.md +2 -2
  147. package/dist/okf/rules/GRAF108.md +11 -0
  148. package/dist/okf/rules/GRAF109.md +15 -0
  149. package/dist/okf/rules/GRAF110.md +11 -0
  150. package/dist/okf/rules/GRAF111.md +11 -0
  151. package/dist/okf/rules/GRAF112.md +16 -0
  152. package/dist/okf/rules/GRAF113.md +16 -0
  153. package/dist/okf/rules/GRAF114.md +11 -0
  154. package/dist/okf/rules/GRAF115.md +11 -0
  155. package/dist/okf/types/AdhocVariable.md +9 -0
  156. package/dist/okf/types/AlertListPanel.md +9 -0
  157. package/dist/okf/types/AlertQuery.md +9 -0
  158. package/dist/okf/types/AlertRule.md +9 -0
  159. package/dist/okf/types/AlertRuleGroup.md +9 -0
  160. package/dist/okf/types/AzureMonitorQuery.md +9 -0
  161. package/dist/okf/types/BarChartPanel.md +9 -0
  162. package/dist/okf/types/BarGaugePanel.md +9 -0
  163. package/dist/okf/types/BigQueryQuery.md +9 -0
  164. package/dist/okf/types/CanvasPanel.md +9 -0
  165. package/dist/okf/types/ClassicConditionsExpression.md +9 -0
  166. package/dist/okf/types/CloudMonitoringQuery.md +9 -0
  167. package/dist/okf/types/CloudWatchQuery.md +9 -0
  168. package/dist/okf/types/ContactPoint.md +14 -0
  169. package/dist/okf/types/Dashboard.md +2 -1
  170. package/dist/okf/types/Datasource.md +3 -2
  171. package/dist/okf/types/DatasourceProvisioning.md +9 -0
  172. package/dist/okf/types/ElasticsearchQuery.md +9 -0
  173. package/dist/okf/types/ExternalDatasource.md +15 -0
  174. package/dist/okf/types/FlameGraphPanel.md +9 -0
  175. package/dist/okf/types/Folder.md +9 -0
  176. package/dist/okf/types/GeomapPanel.md +9 -0
  177. package/dist/okf/types/GroupByVariable.md +9 -0
  178. package/dist/okf/types/HistogramPanel.md +9 -0
  179. package/dist/okf/types/MSSQLQuery.md +9 -0
  180. package/dist/okf/types/MathExpression.md +9 -0
  181. package/dist/okf/types/MuteTiming.md +13 -0
  182. package/dist/okf/types/MySQLQuery.md +9 -0
  183. package/dist/okf/types/NodeGraphPanel.md +9 -0
  184. package/dist/okf/types/NotificationPolicy.md +9 -0
  185. package/dist/okf/types/NotificationTemplate.md +9 -0
  186. package/dist/okf/types/PieChartPanel.md +9 -0
  187. package/dist/okf/types/PostgresQuery.md +9 -0
  188. package/dist/okf/types/PyroscopeQuery.md +9 -0
  189. package/dist/okf/types/ReduceExpression.md +9 -0
  190. package/dist/okf/types/ResampleExpression.md +9 -0
  191. package/dist/okf/types/SqlExpression.md +9 -0
  192. package/dist/okf/types/StateTimelinePanel.md +9 -0
  193. package/dist/okf/types/StatusHistoryPanel.md +9 -0
  194. package/dist/okf/types/SwitchVariable.md +9 -0
  195. package/dist/okf/types/ThresholdExpression.md +9 -0
  196. package/dist/okf/types/TrendPanel.md +9 -0
  197. package/dist/okf/types/XYChartPanel.md +9 -0
  198. package/dist/op/activities/grafana-apply.d.ts +86 -0
  199. package/dist/op/activities/grafana-apply.d.ts.map +1 -0
  200. package/dist/op/activities/index.d.ts +9 -0
  201. package/dist/op/activities/index.d.ts.map +1 -0
  202. package/dist/op/builders.d.ts +24 -0
  203. package/dist/op/builders.d.ts.map +1 -0
  204. package/dist/ownership.d.ts +78 -0
  205. package/dist/ownership.d.ts.map +1 -0
  206. package/dist/panel-options.d.ts +65 -0
  207. package/dist/panel-options.d.ts.map +1 -0
  208. package/dist/panels.d.ts +46 -9
  209. package/dist/panels.d.ts.map +1 -1
  210. package/dist/pin.d.ts +29 -7
  211. package/dist/pin.d.ts.map +1 -1
  212. package/dist/plugin.d.ts.map +1 -1
  213. package/dist/promql-check.d.ts +51 -0
  214. package/dist/promql-check.d.ts.map +1 -0
  215. package/dist/query-models.d.ts +95 -0
  216. package/dist/query-models.d.ts.map +1 -0
  217. package/dist/query.d.ts +116 -18
  218. package/dist/query.d.ts.map +1 -1
  219. package/dist/rules/graf101.ts +3 -3
  220. package/dist/rules/graf102.ts +1 -1
  221. package/dist/rules/graf104.ts +3 -3
  222. package/dist/rules/graf106.ts +3 -3
  223. package/dist/rules/graf107.ts +1 -1
  224. package/dist/rules/graf108.ts +17 -0
  225. package/dist/rules/graf109.ts +17 -0
  226. package/dist/rules/graf110.ts +17 -0
  227. package/dist/rules/graf111.ts +17 -0
  228. package/dist/rules/graf112.ts +17 -0
  229. package/dist/rules/graf113.ts +17 -0
  230. package/dist/rules/graf114.ts +17 -0
  231. package/dist/rules/graf115.ts +17 -0
  232. package/dist/rules/grafana-helpers.ts +27 -10
  233. package/dist/rules/literal-secret.ts +60 -6
  234. package/dist/schema/azuremonitor.gen.d.ts +354 -0
  235. package/dist/schema/azuremonitor.gen.d.ts.map +1 -0
  236. package/dist/schema/barchart.gen.d.ts +198 -0
  237. package/dist/schema/barchart.gen.d.ts.map +1 -0
  238. package/dist/schema/bargauge.gen.d.ts +97 -0
  239. package/dist/schema/bargauge.gen.d.ts.map +1 -0
  240. package/dist/schema/bigquery.gen.d.ts +93 -0
  241. package/dist/schema/bigquery.gen.d.ts.map +1 -0
  242. package/dist/schema/canvas.gen.d.ts +152 -0
  243. package/dist/schema/canvas.gen.d.ts.map +1 -0
  244. package/dist/schema/cloudwatch.gen.d.ts +394 -0
  245. package/dist/schema/cloudwatch.gen.d.ts.map +1 -0
  246. package/dist/schema/dashboard.gen.d.ts +196 -21
  247. package/dist/schema/dashboard.gen.d.ts.map +1 -1
  248. package/dist/schema/elasticsearch.gen.d.ts +444 -0
  249. package/dist/schema/elasticsearch.gen.d.ts.map +1 -0
  250. package/dist/schema/expr.gen.d.ts +606 -0
  251. package/dist/schema/expr.gen.d.ts.map +1 -0
  252. package/dist/schema/gauge.gen.d.ts.map +1 -1
  253. package/dist/schema/geomap.gen.d.ts +100 -0
  254. package/dist/schema/geomap.gen.d.ts.map +1 -0
  255. package/dist/schema/googlecloudmonitoring.gen.d.ts +312 -0
  256. package/dist/schema/googlecloudmonitoring.gen.d.ts.map +1 -0
  257. package/dist/schema/grafanapyroscope.gen.d.ts +60 -0
  258. package/dist/schema/grafanapyroscope.gen.d.ts.map +1 -0
  259. package/dist/schema/heatmap.gen.d.ts.map +1 -1
  260. package/dist/schema/histogram.gen.d.ts +132 -0
  261. package/dist/schema/histogram.gen.d.ts.map +1 -0
  262. package/dist/schema/index.d.ts +18 -0
  263. package/dist/schema/index.d.ts.map +1 -1
  264. package/dist/schema/logs.gen.d.ts +1 -0
  265. package/dist/schema/logs.gen.d.ts.map +1 -1
  266. package/dist/schema/loki.gen.d.ts.map +1 -1
  267. package/dist/schema/nodegraph.gen.d.ts +49 -0
  268. package/dist/schema/nodegraph.gen.d.ts.map +1 -0
  269. package/dist/schema/piechart.gen.d.ts +127 -0
  270. package/dist/schema/piechart.gen.d.ts.map +1 -0
  271. package/dist/schema/prometheus.gen.d.ts.map +1 -1
  272. package/dist/schema/stat.gen.d.ts.map +1 -1
  273. package/dist/schema/statetimeline.gen.d.ts +124 -0
  274. package/dist/schema/statetimeline.gen.d.ts.map +1 -0
  275. package/dist/schema/statushistory.gen.d.ts +114 -0
  276. package/dist/schema/statushistory.gen.d.ts.map +1 -0
  277. package/dist/schema/table.gen.d.ts +35 -3
  278. package/dist/schema/table.gen.d.ts.map +1 -1
  279. package/dist/schema/tempo.gen.d.ts.map +1 -1
  280. package/dist/schema/text.gen.d.ts.map +1 -1
  281. package/dist/schema/timeseries.gen.d.ts +5 -1
  282. package/dist/schema/timeseries.gen.d.ts.map +1 -1
  283. package/dist/schema/trend.gen.d.ts +180 -0
  284. package/dist/schema/trend.gen.d.ts.map +1 -0
  285. package/dist/schema/xychart.gen.d.ts +145 -0
  286. package/dist/schema/xychart.gen.d.ts.map +1 -0
  287. package/dist/schema-validate.d.ts +39 -4
  288. package/dist/schema-validate.d.ts.map +1 -1
  289. package/dist/serializer.d.ts +11 -3
  290. package/dist/serializer.d.ts.map +1 -1
  291. package/dist/skill-defs.d.ts.map +1 -1
  292. package/dist/skills/chant-grafana-alerting.md +49 -0
  293. package/dist/skills/chant-grafana-operations.md +108 -0
  294. package/dist/skills/chant-grafana-provisioning.md +3 -3
  295. package/dist/skills/chant-grafana.md +15 -8
  296. package/dist/spec/fetch-units-cli.d.ts +3 -0
  297. package/dist/spec/fetch-units-cli.d.ts.map +1 -0
  298. package/dist/spec/overlay.d.ts +43 -0
  299. package/dist/spec/overlay.d.ts.map +1 -0
  300. package/dist/spec/schemas.d.ts +21 -13
  301. package/dist/spec/schemas.d.ts.map +1 -1
  302. package/dist/spec/schemas.gen.d.ts +3 -0
  303. package/dist/spec/schemas.gen.d.ts.map +1 -0
  304. package/dist/spec/units.d.ts +35 -0
  305. package/dist/spec/units.d.ts.map +1 -0
  306. package/dist/spec/units.gen.d.ts +2 -0
  307. package/dist/spec/units.gen.d.ts.map +1 -0
  308. package/dist/transformations.d.ts +459 -0
  309. package/dist/transformations.d.ts.map +1 -0
  310. package/dist/util.d.ts +6 -0
  311. package/dist/util.d.ts.map +1 -1
  312. package/dist/validate-alerting.d.ts +65 -0
  313. package/dist/validate-alerting.d.ts.map +1 -0
  314. package/dist/validate-output.d.ts +62 -9
  315. package/dist/validate-output.d.ts.map +1 -1
  316. package/dist/validate.d.ts.map +1 -1
  317. package/dist/validation.d.ts +14 -0
  318. package/dist/validation.d.ts.map +1 -0
  319. package/dist/variables.d.ts +109 -7
  320. package/dist/variables.d.ts.map +1 -1
  321. package/package.json +12 -4
  322. package/src/actions/actions.test.ts +24 -0
  323. package/src/actions/grafana.ts +40 -0
  324. package/src/actions/index.ts +1 -0
  325. package/src/alerting-build.ts +376 -0
  326. package/src/alerting.e2e.test.ts +212 -0
  327. package/src/alerting.test.ts +272 -0
  328. package/src/alerting.ts +435 -0
  329. package/src/annotations.ts +84 -0
  330. package/src/api/apply.test.ts +256 -0
  331. package/src/api/apply.ts +394 -0
  332. package/src/api/bind.ts +58 -0
  333. package/src/api/client.ts +148 -0
  334. package/src/api/converge.ts +63 -0
  335. package/src/api/dashboards.ts +247 -0
  336. package/src/api/datasources.ts +33 -0
  337. package/src/api/fake-grafana-writes.ts +201 -0
  338. package/src/api/fake-grafana.ts +190 -0
  339. package/src/api/folders.ts +339 -0
  340. package/src/api/library-panels.ts +101 -0
  341. package/src/build.test.ts +351 -10
  342. package/src/build.ts +294 -55
  343. package/src/catalog.ts +104 -2
  344. package/src/codegen/docs.ts +50 -10
  345. package/src/codegen/generate.ts +27 -1
  346. package/src/codegen/schema-types.ts +16 -6
  347. package/src/composites/agent-dashboard.ts +6 -3
  348. package/src/composites/catalog.test.ts +2 -2
  349. package/src/composites/catalog.ts +82 -0
  350. package/src/composites/composites.test.ts +73 -9
  351. package/src/composites/index.ts +4 -2
  352. package/src/composites/queries.e2e.test.ts +374 -0
  353. package/src/composites/red-dashboard.ts +83 -12
  354. package/src/composites/shared.ts +14 -2
  355. package/src/composites/slo-alert-rules.ts +149 -0
  356. package/src/config.test.ts +61 -0
  357. package/src/config.ts +138 -0
  358. package/src/contact-point-secrets.ts +63 -0
  359. package/src/dashboard.ts +68 -9
  360. package/src/datasource-refs.test.ts +56 -0
  361. package/src/datasource-refs.ts +213 -0
  362. package/src/datasource-settings.test.ts +106 -0
  363. package/src/datasource-settings.ts +941 -0
  364. package/src/datasource.ts +123 -11
  365. package/src/deep-observe-hooks.ts +267 -0
  366. package/src/deep-observe.test.ts +311 -0
  367. package/src/deep-observe.ts +187 -0
  368. package/src/describe-resources.test.ts +271 -0
  369. package/src/describe-resources.ts +244 -0
  370. package/src/detect.ts +82 -5
  371. package/src/export-resources.test.ts +129 -0
  372. package/src/export-resources.ts +84 -0
  373. package/src/folder.ts +118 -0
  374. package/src/generated/lexicon-grafana.json +205 -0
  375. package/src/import/alerting-roundtrip.test.ts +161 -0
  376. package/src/import/alerting.ts +500 -0
  377. package/src/import/edits.ts +95 -0
  378. package/src/import/embedded.test.ts +45 -0
  379. package/src/import/embedded.ts +47 -0
  380. package/src/import/generated-types.e2e.test.ts +130 -0
  381. package/src/import/generator.test.ts +210 -0
  382. package/src/import/generator.ts +463 -0
  383. package/src/import/live-export.ts +264 -0
  384. package/src/import/mappings.ts +336 -0
  385. package/src/import/model.ts +117 -0
  386. package/src/import/normalize-alerting.ts +101 -0
  387. package/src/import/normalize.test.ts +117 -0
  388. package/src/import/normalize.ts +393 -0
  389. package/src/import/parser.test.ts +516 -0
  390. package/src/import/parser.ts +1387 -0
  391. package/src/import/report.ts +62 -0
  392. package/src/import/roundtrip.test.ts +563 -0
  393. package/src/import/testdata/fixtures.ts +137 -0
  394. package/src/import/v2.test.ts +292 -0
  395. package/src/import/v2.ts +804 -0
  396. package/src/import.e2e.test.ts +31 -84
  397. package/src/import.test.ts +9 -3
  398. package/src/index.ts +308 -14
  399. package/src/init-templates.test.ts +74 -0
  400. package/src/init-templates.ts +349 -0
  401. package/src/k8s.test.ts +98 -0
  402. package/src/k8s.ts +197 -0
  403. package/src/lint/audit-catalog.ts +68 -3
  404. package/src/lint/core-lint.test.ts +43 -0
  405. package/src/lint/post-synth/graf101.ts +3 -3
  406. package/src/lint/post-synth/graf102.ts +1 -1
  407. package/src/lint/post-synth/graf104.ts +3 -3
  408. package/src/lint/post-synth/graf106.ts +3 -3
  409. package/src/lint/post-synth/graf107.ts +1 -1
  410. package/src/lint/post-synth/graf108.ts +17 -0
  411. package/src/lint/post-synth/graf109.ts +17 -0
  412. package/src/lint/post-synth/graf110.ts +17 -0
  413. package/src/lint/post-synth/graf111.ts +17 -0
  414. package/src/lint/post-synth/graf112.ts +17 -0
  415. package/src/lint/post-synth/graf113.ts +17 -0
  416. package/src/lint/post-synth/graf114.ts +17 -0
  417. package/src/lint/post-synth/graf115.ts +17 -0
  418. package/src/lint/post-synth/grafana-helpers.ts +27 -10
  419. package/src/lint/post-synth/index.ts +16 -0
  420. package/src/lint/post-synth/post-synth.test.ts +333 -12
  421. package/src/lint/rules/literal-secret.ts +60 -6
  422. package/src/lint/rules/rules.test.ts +27 -0
  423. package/src/load-cost.test.ts +35 -0
  424. package/src/lsp/completions.test.ts +5 -0
  425. package/src/lsp/hover.test.ts +7 -0
  426. package/src/lsp/hover.ts +8 -1
  427. package/src/members.ts +68 -0
  428. package/src/observe.e2e.test.ts +255 -0
  429. package/src/op/activities/grafana-apply.e2e.test.ts +184 -0
  430. package/src/op/activities/grafana-apply.test.ts +243 -0
  431. package/src/op/activities/grafana-apply.ts +197 -0
  432. package/src/op/activities/index.ts +8 -0
  433. package/src/op/builders.test.ts +40 -0
  434. package/src/op/builders.ts +34 -0
  435. package/src/ownership.ts +122 -0
  436. package/src/panel-options.ts +66 -0
  437. package/src/panels.test.ts +53 -0
  438. package/src/panels.ts +148 -10
  439. package/src/pin.ts +69 -6
  440. package/src/plugin.test.ts +12 -2
  441. package/src/plugin.ts +75 -0
  442. package/src/promql-check.test.ts +108 -0
  443. package/src/promql-check.ts +193 -0
  444. package/src/query-models.ts +94 -0
  445. package/src/query.test.ts +166 -0
  446. package/src/query.ts +190 -20
  447. package/src/schema/azuremonitor.gen.ts +381 -0
  448. package/src/schema/barchart.gen.ts +221 -0
  449. package/src/schema/bargauge.gen.ts +111 -0
  450. package/src/schema/bigquery.gen.ts +110 -0
  451. package/src/schema/canvas.gen.ts +176 -0
  452. package/src/schema/cloudwatch.gen.ts +423 -0
  453. package/src/schema/dashboard.gen.ts +206 -22
  454. package/src/schema/elasticsearch.gen.ts +508 -0
  455. package/src/schema/expr.gen.ts +618 -0
  456. package/src/schema/gauge.gen.ts +2 -1
  457. package/src/schema/geomap.gen.ts +112 -0
  458. package/src/schema/googlecloudmonitoring.gen.ts +330 -0
  459. package/src/schema/grafanapyroscope.gen.ts +66 -0
  460. package/src/schema/heatmap.gen.ts +2 -1
  461. package/src/schema/histogram.gen.ts +151 -0
  462. package/src/schema/index.ts +18 -0
  463. package/src/schema/logs.gen.ts +3 -1
  464. package/src/schema/loki.gen.ts +2 -1
  465. package/src/schema/nodegraph.gen.ts +58 -0
  466. package/src/schema/piechart.gen.ts +146 -0
  467. package/src/schema/prometheus.gen.ts +2 -1
  468. package/src/schema/stat.gen.ts +2 -1
  469. package/src/schema/statetimeline.gen.ts +143 -0
  470. package/src/schema/statushistory.gen.ts +132 -0
  471. package/src/schema/table.gen.ts +41 -4
  472. package/src/schema/tempo.gen.ts +2 -1
  473. package/src/schema/text.gen.ts +2 -1
  474. package/src/schema/timeseries.gen.ts +7 -2
  475. package/src/schema/trend.gen.ts +208 -0
  476. package/src/schema/xychart.gen.ts +167 -0
  477. package/src/schema-overlay.test.ts +282 -0
  478. package/src/schema-validate.ts +199 -57
  479. package/src/schema.test.ts +4 -2
  480. package/src/serializer.test.ts +13 -1
  481. package/src/serializer.ts +11 -3
  482. package/src/skill-defs.ts +34 -0
  483. package/src/skills/chant-grafana-alerting.md +49 -0
  484. package/src/skills/chant-grafana-operations.md +108 -0
  485. package/src/skills/chant-grafana-provisioning.md +3 -3
  486. package/src/skills/chant-grafana.md +15 -8
  487. package/src/spec/fetch-cli.ts +3 -3
  488. package/src/spec/fetch-units-cli.ts +37 -0
  489. package/src/spec/overlay/canvas.overlay.json +142 -0
  490. package/src/spec/overlay/dashboard.overlay.json +378 -0
  491. package/src/spec/overlay/expr.overlay.json +14 -0
  492. package/src/spec/overlay/geomap.overlay.json +35 -0
  493. package/src/spec/overlay/logs.overlay.json +14 -0
  494. package/src/spec/overlay/nodegraph.overlay.json +31 -0
  495. package/src/spec/overlay/piechart.overlay.json +17 -0
  496. package/src/spec/overlay/table.overlay.json +103 -0
  497. package/src/spec/overlay/timeseries.overlay.json +21 -0
  498. package/src/spec/overlay/trend.overlay.json +17 -0
  499. package/src/spec/overlay/xychart.overlay.json +16 -0
  500. package/src/spec/overlay.ts +105 -0
  501. package/src/spec/schemas/azuremonitor.jsonschema.json +679 -0
  502. package/src/spec/schemas/barchart.jsonschema.json +419 -0
  503. package/src/spec/schemas/bargauge.jsonschema.json +224 -0
  504. package/src/spec/schemas/bigquery.jsonschema.json +290 -0
  505. package/src/spec/schemas/canvas.jsonschema.json +356 -0
  506. package/src/spec/schemas/cloudwatch.jsonschema.json +721 -0
  507. package/src/spec/schemas/dashboardv2.jsonschema.json +3387 -0
  508. package/src/spec/schemas/elasticsearch.jsonschema.json +1695 -0
  509. package/src/spec/schemas/expr.jsonschema.json +987 -0
  510. package/src/spec/schemas/geomap.jsonschema.json +220 -0
  511. package/src/spec/schemas/googlecloudmonitoring.jsonschema.json +488 -0
  512. package/src/spec/schemas/grafanapyroscope.jsonschema.json +93 -0
  513. package/src/spec/schemas/histogram.jsonschema.json +308 -0
  514. package/src/spec/schemas/nodegraph.jsonschema.json +77 -0
  515. package/src/spec/schemas/piechart.jsonschema.json +275 -0
  516. package/src/spec/schemas/statetimeline.jsonschema.json +324 -0
  517. package/src/spec/schemas/statushistory.jsonschema.json +292 -0
  518. package/src/spec/schemas/trend.jsonschema.json +449 -0
  519. package/src/spec/schemas/xychart.jsonschema.json +428 -0
  520. package/src/spec/schemas.gen.ts +40 -0
  521. package/src/spec/schemas.ts +30 -16
  522. package/src/spec/units.gen.ts +281 -0
  523. package/src/spec/units.ts +77 -0
  524. package/src/transformations.test.ts +65 -0
  525. package/src/transformations.ts +574 -0
  526. package/src/util.ts +8 -0
  527. package/src/validate-alerting.test.ts +255 -0
  528. package/src/validate-alerting.ts +430 -0
  529. package/src/validate-output.ts +427 -104
  530. package/src/validate.ts +28 -0
  531. package/src/validation.ts +27 -0
  532. package/src/variables.ts +120 -8
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Folders: the one place a build's folders become uids and parents, and how
3
+ * the API applier (#2948) and observation read and write them.
4
+ *
5
+ * ## What a build declares
6
+ *
7
+ * A dashboard names its folder as a path (`Dashboard.folder:
8
+ * "Platform/Kubernetes"`) or as a `Folder` (../folder.ts), and a `Folder`
9
+ * may be declared on its own. {@link resolveFolders} turns all of it into
10
+ * one {@link FolderPlan} per folder: every level of every path, the uid a
11
+ * `Folder` pins or {@link folderUidFor} of its path, and its parent's uid.
12
+ * The build calls it and writes the result to its index (`folders`, and a
13
+ * `folderUid` on each dashboard); the applier reads the index and calls it
14
+ * again, which also covers an index written before folders were listed.
15
+ * Two folders at one path with different uids, or two paths with one uid,
16
+ * throw: no delivery could make both.
17
+ *
18
+ * ## Which API
19
+ *
20
+ * Grafana 12.4 serves `folder.grafana.app/v1beta1` and 13.x also serves
21
+ * `v1`, both keeping `metadata.labels` as written (checked against 12.4.11
22
+ * and 13.2.2), so a folder carries chant's ownership labels the same way a
23
+ * dashboard does. The parent is the `grafana.app/folder` annotation, as on a
24
+ * dashboard. A server without the group (Grafana 11) is written over
25
+ * `/api/folders`, which has `parentUid` but no labels: a folder written
26
+ * there cannot be told apart from anyone else's, so it is never pruned.
27
+ */
28
+ import { type GrafanaClient } from "./client.js";
29
+ import { folderUidFor } from "../folder.js";
30
+ export { folderUidFor };
31
+ export declare const FOLDER_GROUP = "folder.grafana.app";
32
+ /** Folder API versions chant writes, newest first. */
33
+ export declare const FOLDER_VERSIONS: readonly string[];
34
+ /** The annotation that names a folder's (or a dashboard's) parent folder on `/apis`. */
35
+ export declare const FOLDER_ANNOTATION = "grafana.app/folder";
36
+ /** How this server serves folders. */
37
+ export type FolderApi = {
38
+ readonly kind: "apis";
39
+ readonly version: string;
40
+ } | {
41
+ readonly kind: "legacy";
42
+ };
43
+ /** One folder a build needs. */
44
+ export interface FolderPlan {
45
+ readonly uid: string;
46
+ readonly title: string;
47
+ /** The parent folder's uid; absent for a root-level folder. */
48
+ readonly parentUid?: string;
49
+ /** Its titles from the root, joined with `/`: the directory file provisioning reads it from. */
50
+ readonly path?: string;
51
+ }
52
+ /** A folder as Grafana holds it. */
53
+ export interface LiveFolder {
54
+ readonly uid: string;
55
+ readonly title: string;
56
+ readonly parentUid?: string;
57
+ /** `metadata.labels`; empty on the legacy API. */
58
+ readonly labels: Readonly<Record<string, string>>;
59
+ /** `metadata.annotations`; empty on the legacy API. */
60
+ readonly annotations?: Readonly<Record<string, string>>;
61
+ readonly via: "apis" | "legacy";
62
+ /** The request path it lives at. */
63
+ readonly address: string;
64
+ /** The legacy folder's `version`, which its update needs. */
65
+ readonly version?: number;
66
+ }
67
+ /** The folders a build resolves to, and the uid of each path. */
68
+ export interface ResolvedFolders {
69
+ /** One per folder, sorted by path, so a parent comes before its children. */
70
+ readonly folders: FolderPlan[];
71
+ /** The uid of the folder at `path` (any spelling `folderLevels` reads the same); undefined for the General folder. */
72
+ uidOf(path: string | undefined): string | undefined;
73
+ }
74
+ /**
75
+ * Every folder a build needs, with its uid and parent: the folders declared
76
+ * with a uid (`Folder`s, or dashboards already resolved), and every level of
77
+ * every path a dashboard names. A level no declaration pins gets
78
+ * {@link folderUidFor} of its path. Throws when two declarations put
79
+ * different uids at one path, and when two paths would get one uid unless
80
+ * `duplicateUids` is `keep`: the build keeps both and GRAF104 reports them,
81
+ * since file provisioning, which gives folders uids of its own, can still
82
+ * deliver them.
83
+ */
84
+ export declare function resolveFolders(input: {
85
+ declared?: Iterable<{
86
+ uid: string;
87
+ path: string;
88
+ }>;
89
+ paths?: Iterable<string | undefined>;
90
+ }, options?: {
91
+ duplicateUids?: "throw" | "keep";
92
+ }): ResolvedFolders;
93
+ /**
94
+ * The folders a set of dashboards needs: every level of every folder they
95
+ * name, sorted by path. A dashboard that already carries its `folderUid`
96
+ * pins its folder's uid.
97
+ */
98
+ export declare function foldersForDashboards(dashboards: Iterable<{
99
+ folder?: string;
100
+ folderUid?: string;
101
+ }>): FolderPlan[];
102
+ /** The folder API the server behind `client` serves, discovered once per client. */
103
+ export declare function folderApi(client: GrafanaClient): Promise<FolderApi>;
104
+ /** The request path for one folder on this API. */
105
+ export declare function folderPath(api: FolderApi, namespace: string, uid: string): string;
106
+ /** Read one folder; undefined when there is none with that uid. */
107
+ export declare function readFolder(client: GrafanaClient, uid: string): Promise<LiveFolder | undefined>;
108
+ /**
109
+ * The path of the folder with this uid, its titles from the root joined with
110
+ * `/`, the form `Dashboard.folder` takes. One read per folder per client;
111
+ * undefined when the folder, or one of its parents, cannot be found.
112
+ */
113
+ export declare function liveFolderPath(client: GrafanaClient, uid: string): Promise<string | undefined>;
114
+ /** Every folder in the organisation over `/apis`, paged. The legacy API has no labels to list by, so it is not listed. */
115
+ export declare function listFolders(client: GrafanaClient): Promise<LiveFolder[]>;
116
+ /** Send one write; throws {@link GrafanaApiError} on anything but a 2xx. */
117
+ export declare function send(client: GrafanaClient, method: string, path: string, body?: unknown): Promise<unknown>;
118
+ /**
119
+ * Create or update one folder so it matches `plan`, with chant's `labels`
120
+ * on it where the API keeps labels. Unchanged when title, parent and labels
121
+ * already match; nothing is written then.
122
+ */
123
+ export declare function ensureFolder(client: GrafanaClient, plan: FolderPlan, labels: Readonly<Record<string, string>>): Promise<{
124
+ action: "created" | "updated" | "unchanged";
125
+ address: string;
126
+ via: "apis" | "legacy";
127
+ }>;
128
+ /**
129
+ * How many things a folder holds (dashboards, folders, library panels, alert
130
+ * rules), from `GET /api/folders/<uid>/counts`. Grafana 12.4 and 13.2 name
131
+ * the keys differently, so every numeric value is summed.
132
+ */
133
+ export declare function folderContentCount(client: GrafanaClient, uid: string): Promise<number>;
134
+ /**
135
+ * Delete one folder over `/apis`. Only ever called for a folder that holds
136
+ * nothing: Grafana 12.4 and 13.2 refuse to delete a folder with anything in
137
+ * it over `/apis`, and the applier checks first, so a foreign dashboard in a
138
+ * folder chant made is never removed with it. False when it was already gone.
139
+ */
140
+ export declare function deleteFolder(client: GrafanaClient, folder: LiveFolder): Promise<boolean>;
141
+ /**
142
+ * Order folders so a child comes before its parent: the order to delete
143
+ * them in. Parents outside the set count as depth 0.
144
+ */
145
+ export declare function childrenFirst(folders: readonly LiveFolder[]): LiveFolder[];
146
+ //# sourceMappingURL=folders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folders.d.ts","sourceRoot":"","sources":["../../src/api/folders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Library panels, for the API applier (#2948).
3
+ *
4
+ * A dashboard that uses a library panel holds only a reference to it
5
+ * (`{ libraryPanel: { uid, name } }`); the panel itself lives in Grafana's
6
+ * library, and an exported dashboard carries its model in `__elements`,
7
+ * keyed by uid. The applier writes each element to the library over
8
+ * `/api/library-elements` before the dashboards that reference it, and
9
+ * sends the dashboards without `__elements`, `__inputs` or `__requires`,
10
+ * which are export-only keys Grafana does not store.
11
+ *
12
+ * The library elements API is the same on Grafana 11, 12.4 and 13.2. It has
13
+ * no labels, so a library panel cannot carry chant's marker and is never
14
+ * pruned (the applier reports that as `not-prunable`). An update needs the
15
+ * element's current `version`, which the read supplies.
16
+ */
17
+ import type { GrafanaClient } from "./client.js";
18
+ type Json = Record<string, unknown>;
19
+ /** `kind` of a library panel in the library elements API (2 is a library variable). */
20
+ export declare const LIBRARY_PANEL_KIND = 1;
21
+ /** Keys an exported dashboard carries that Grafana does not store. */
22
+ export declare const EXPORT_ONLY_KEYS: readonly string[];
23
+ /** One library panel a build needs. */
24
+ export interface LibraryPanelPlan {
25
+ readonly uid: string;
26
+ readonly name: string;
27
+ readonly model: Json;
28
+ /** The folder it goes in: that of the first dashboard that carries it. Absent for the General folder. */
29
+ readonly folderUid?: string;
30
+ }
31
+ /**
32
+ * The library panels in a dashboard's `__elements`. An element that is not a
33
+ * panel (a library variable), or that has no uid, name or model, is not
34
+ * something the library panel API can take; it is returned in `skipped`.
35
+ */
36
+ export declare function libraryPanelsOf(dashboard: Json, folderUid?: string): {
37
+ panels: LibraryPanelPlan[];
38
+ skipped: string[];
39
+ };
40
+ /** A dashboard without the export-only keys, as the applier sends it. */
41
+ export declare function withoutExportKeys(dashboard: Json): Json;
42
+ export declare function libraryPanelPath(uid: string): string;
43
+ /**
44
+ * Create or update one library panel. Unchanged when its name, folder and
45
+ * model already match; nothing is written then.
46
+ */
47
+ export declare function ensureLibraryPanel(client: GrafanaClient, plan: LibraryPanelPlan): Promise<{
48
+ action: "created" | "updated" | "unchanged";
49
+ address: string;
50
+ }>;
51
+ export {};
52
+ //# sourceMappingURL=library-panels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library-panels.d.ts","sourceRoot":"","sources":["../../src/api/library-panels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI9C,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAMpC,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAA6C,CAAC;AAE5F,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,yGAAyG;IACzG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAmBtH;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAIvD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAc3E"}
package/dist/build.d.ts CHANGED
@@ -8,12 +8,14 @@
8
8
  * `buildGrafana()`.
9
9
  */
10
10
  import type { Declarable } from "@intentius/chant/declarable";
11
- import { type DatasourceEntity } from "./datasource.js";
12
- import { type DashboardEntity, type DashboardProviderProps } from "./dashboard.js";
11
+ import { type DatasourceEntity, type DatasourceProvisioningProps, type DeletedDatasource, type ExternalDatasourceEntity } from "./datasource.js";
12
+ import { type DashboardEntity, type DashboardProviderEntityProps } from "./dashboard.js";
13
+ import { type FolderPlan } from "./api/folders.js";
13
14
  import { type PanelEntity, type RowEntity } from "./panels.js";
14
15
  import { type QueryEntity, type DatasourceInput } from "./query.js";
15
16
  import { type VariableEntity } from "./variables.js";
16
17
  import type { Dashboard as DashboardJson, DataSourceRef, Panel as PanelJson, RowPanel as RowPanelJson, VariableModel } from "./schema/dashboard.gen.js";
18
+ import { type AlertingFile, type AlertingIndex } from "./alerting-build.js";
17
19
  export type { DashboardJson, PanelJson, RowPanelJson, VariableModel, DataSourceRef };
18
20
  /** Grafana's grid is 24 columns wide. */
19
21
  export declare const GRID_COLUMNS = 24;
@@ -40,6 +42,11 @@ export interface ProvisionedDatasource {
40
42
  orgId?: number;
41
43
  version?: number;
42
44
  }
45
+ /** The settings of the datasource provisioning file besides its datasources. */
46
+ export interface DatasourceFileSettings {
47
+ prune: boolean;
48
+ deleteDatasources: DeletedDatasource[];
49
+ }
43
50
  /** One entry of `providers:` in a dashboard provisioning file. */
44
51
  export interface ProvisionedProvider {
45
52
  name: string;
@@ -59,6 +66,8 @@ export interface BuiltDashboard {
59
66
  uid: string;
60
67
  title: string;
61
68
  folder?: string;
69
+ /** The uid of its folder, when it is in one. */
70
+ folderUid?: string;
62
71
  /** Path of its JSON file, relative to the output directory. */
63
72
  file: string;
64
73
  json: DashboardJson;
@@ -66,7 +75,15 @@ export interface BuiltDashboard {
66
75
  export interface BuiltGrafana {
67
76
  dashboards: BuiltDashboard[];
68
77
  datasources: ProvisionedDatasource[];
78
+ /** `ExternalDatasource` declarations: the checks count them, the provisioning file leaves them out. */
79
+ externalDatasources: ExternalDatasourceRecord[];
69
80
  providers: ProvisionedProvider[];
81
+ /** Every folder the dashboards and `Folder`s name, each level of a path its own, sorted by path. */
82
+ folders: FolderPlan[];
83
+ /** `prune` and `deleteDatasources` of the datasource provisioning file. */
84
+ datasourceFile: DatasourceFileSettings;
85
+ /** The alerting provisioning file, when the build declares any alerting. */
86
+ alerting?: AlertingFile;
70
87
  /** Every output file by path, ready to write. */
71
88
  files: Record<string, string>;
72
89
  /** A short summary of what was built: the serializer's primary output. */
@@ -78,17 +95,41 @@ export interface GrafanaIndex {
78
95
  uid: string;
79
96
  title: string;
80
97
  folder?: string;
98
+ folderUid?: string;
81
99
  file: string;
82
100
  }>;
101
+ /** The folders the dashboards are in, and any `Folder` declared: what the API applier creates, parents first. */
102
+ folders?: FolderPlan[];
83
103
  datasources: Array<{
84
104
  name: string;
85
105
  type: string;
86
106
  uid: string;
87
107
  }>;
108
+ /** Datasources declared with `ExternalDatasource`: referenced, never provisioned. */
109
+ externalDatasources?: ExternalDatasourceRecord[];
110
+ /** Rule groups, contact points, policies, mute timings and templates, when the build declares any. */
111
+ alerting?: AlertingIndex;
88
112
  files: string[];
89
113
  }
90
- /** The `{ type, uid }` Grafana stores for a datasource, a datasource variable, or a ref. */
114
+ /** An `ExternalDatasource` as the checks and the index see it. */
115
+ export interface ExternalDatasourceRecord {
116
+ type: string;
117
+ uid: string;
118
+ name?: string;
119
+ }
120
+ /** The `{ type, uid }` Grafana stores for a datasource (declared or external), a datasource variable, or a ref. */
91
121
  export declare function datasourceRef(input: DatasourceInput | undefined): DataSourceRef | undefined;
122
+ /**
123
+ * The options Grafana makes of a custom variable's `query`: split on commas
124
+ * not escaped as `\\,`, and `text : value` (spaces around the colon) read as
125
+ * an option showing `text` that sets `value`. The same parse as Grafana's
126
+ * custom variable (public/app/features/variables/custom/reducer.ts, and
127
+ * CustomVariable in @grafana/scenes).
128
+ */
129
+ export declare function customVariableOptions(query: string): Array<{
130
+ text: string;
131
+ value: string;
132
+ }>;
92
133
  /** One variable as Grafana's `templating.list` entry. */
93
134
  export declare function variableModel(variable: VariableEntity): VariableModel;
94
135
  /** One query as a panel target. */
@@ -103,10 +144,18 @@ export declare function renderDashboard(dashboard: DashboardEntity, exportName?:
103
144
  export declare function dashboardJson(dashboard: DashboardEntity, exportName?: string): string;
104
145
  /** One datasource as a provisioning entry. */
105
146
  export declare function provisionedDatasource(ds: DatasourceEntity): ProvisionedDatasource;
147
+ /** One `ExternalDatasource` as the checks and the index see it. */
148
+ export declare function externalDatasourceRecord(ds: ExternalDatasourceEntity): ExternalDatasourceRecord;
106
149
  /** One dashboard provider as a provisioning entry. */
107
- export declare function provisionedProvider(p: DashboardProviderProps): ProvisionedProvider;
108
- /** The datasource provisioning file for these datasources. */
109
- export declare function datasourcesYaml(datasources: ProvisionedDatasource[]): string;
150
+ export declare function provisionedProvider(p: DashboardProviderEntityProps): ProvisionedProvider;
151
+ /** `prune` and `deleteDatasources` as a build writes them: pruning on unless a `DatasourceProvisioning` turns it off. */
152
+ export declare function datasourceFileSettings(props: DatasourceProvisioningProps | undefined): DatasourceFileSettings;
153
+ /**
154
+ * The datasource provisioning file for these datasources. It prunes by
155
+ * default (`prune: true`), so a datasource removed from the build is removed
156
+ * from Grafana; `deleteDatasources` comes first, as Grafana runs it first.
157
+ */
158
+ export declare function datasourcesYaml(datasources: ProvisionedDatasource[], settings?: DatasourceFileSettings): string;
110
159
  /** The dashboard provisioning file for these providers. */
111
160
  export declare function dashboardProvidersYaml(providers: ProvisionedProvider[]): string;
112
161
  /** Everything the grafana entities in a build render to. */
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
package/dist/catalog.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * completions and hover, and the docs.
5
5
  */
6
6
  import type { LexiconEntry } from "@intentius/chant/lsp/lexicon-providers";
7
- export type CatalogKind = "dashboard" | "datasource" | "provider" | "panel" | "row" | "query" | "variable";
7
+ export type CatalogKind = "dashboard" | "folder" | "datasource" | "provider" | "panel" | "row" | "query" | "variable" | "alerting" | "expression";
8
8
  export interface CatalogEntry {
9
9
  className: string;
10
10
  entityType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAO3E,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3G,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB,wEAAwE;IACxE,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;IACpC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAqCD,eAAO,MAAM,eAAe,EAAE,YAAY,EAwCzC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAM9D"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAkB3E,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;AAElJ,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB,wEAAwE;IACxE,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;IACpC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAiDD,eAAO,MAAM,eAAe,EAAE,YAAY,EAuHzC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAM9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/codegen/docs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsEH,wBAAsB,YAAY,CAAC,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9E"}
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/codegen/docs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8GH,wBAAsB,YAAY,CAAC,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9E"}
@@ -4,12 +4,18 @@
4
4
  * 1. `src/schema/<name>.gen.ts` from each vendored schema in `src/spec/schemas/`
5
5
  * (see `src/pin.ts`). These are committed, and a test fails when they
6
6
  * drift from what this step would write.
7
- * 2. `src/generated/lexicon-grafana.json`, the registry of entity classes
7
+ * 2. `src/spec/schemas.gen.ts`, the same schemas with the overlay applied, as
8
+ * JSON text. Validation (GRAF107, the `/validation` subpath) reads them
9
+ * from there rather than from the files, so it needs no filesystem access
10
+ * and works bundled. Committed and checked the same way.
11
+ * 3. `src/generated/lexicon-grafana.json`, the registry of entity classes
8
12
  * the package exports, derived from the catalog so the packaged
9
13
  * `dist/meta.json` cannot disagree with the classes.
10
14
  */
11
15
  import type { GenerateResult } from "@intentius/chant/codegen/generate";
12
16
  export type { GenerateResult };
17
+ /** `src/spec/schemas.gen.ts`: each schema validation uses, overlay applied, as one line of JSON text. */
18
+ export declare function schemaDataModule(): string;
13
19
  /** Every generated schema module, keyed by path relative to the package root. */
14
20
  export declare function schemaModules(): Record<string, string>;
15
21
  export declare function generate(opts?: {
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/codegen/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAKxE,YAAY,EAAE,cAAc,EAAE,CAAC;AAY/B,iFAAiF;AACjF,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQtD;AAQD,wBAAsB,QAAQ,CAAC,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CA2BrG;AAED,mGAAmG;AACnG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAIhE"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/codegen/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAKxE,YAAY,EAAE,cAAc,EAAE,CAAC;AAY/B,yGAAyG;AACzG,wBAAgB,gBAAgB,IAAI,MAAM,CAkBzC;AAED,iFAAiF;AACjF,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAStD;AAQD,wBAAsB,QAAQ,CAAC,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CA2BrG;AAED,mGAAmG;AACnG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAIhE"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * JSON Schema (draft-07, the subset cog emits) to TypeScript declarations.
3
3
  *
4
- * Each vendored schema becomes one module under `src/schema/`: one exported
5
- * type per entry in `definitions`, with the schema's descriptions as doc
6
- * comments. `required` is kept, so the types say what the schema says; the
4
+ * Each vendored schema, with its correction overlay applied, becomes one
5
+ * module under `src/schema/`: one exported type per entry in `definitions`,
6
+ * with the schema's descriptions as doc comments. `required` is kept, so the types say what the schema says; the
7
7
  * entity props wrap panel options in `DeepPartial` where Grafana fills the
8
8
  * rest in on import.
9
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"schema-types.d.ts","sourceRoot":"","sources":["../../src/codegen/schema-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,UAAU,IAAI;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,oBAAoB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAWD,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhD;AA2DD,+CAA+C;AAC/C,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,EAAE,MAAM,SAAK,GAAG,MAAM,CAwC5E;AAED,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,eAAe,CAoBrH"}
1
+ {"version":3,"file":"schema-types.d.ts","sourceRoot":"","sources":["../../src/codegen/schema-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,UAAU,IAAI;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,oBAAoB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAWD,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhD;AAoED,+CAA+C;AAC/C,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,EAAE,MAAM,SAAK,GAAG,MAAM,CAwC5E;AAED,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,eAAe,CAqBrH"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-dashboard.d.ts","sourceRoot":"","sources":["../../src/composites/agent-dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAsC,KAAK,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAE5G,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAK/D,OAAO,EASL,KAAK,gBAAgB,EAEtB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,kIAAkI;IAClI,KAAK,EAAE,YAAY,GAAG;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE,CAAC;IAChD,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG;IAAE,SAAS,EAAE,eAAe,CAAA;CAAE,CAAC;AAEnE,yEAAyE;AACzE,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,CAAC;AAiBtG,oHAAoH;AACpH,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,SAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CrD;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,sGAoHP,CAAC"}
1
+ {"version":3,"file":"agent-dashboard.d.ts","sourceRoot":"","sources":["../../src/composites/agent-dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAsC,KAAK,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAE5G,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAK/D,OAAO,EAUL,KAAK,gBAAgB,EAEtB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,kIAAkI;IAClI,KAAK,EAAE,YAAY,GAAG;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE,CAAC;IAChD,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG;IAAE,SAAS,EAAE,eAAe,CAAA;CAAE,CAAC;AAEnE,yEAAyE;AACzE,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,CAAC;AAiBtG,oHAAoH;AACpH,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,SAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4CrD;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,sGAuHP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/composites/catalog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAyN5C,CAAC"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/composites/catalog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,eAAO,MAAM,gBAAgB,EAAE,cAAc,EA2S5C,CAAC"}
@@ -2,11 +2,13 @@
2
2
  * Grafana lexicon composites: dashboards built from the declarations they
3
3
  * read, so renaming a metric at its source moves it in the panels.
4
4
  */
5
- export { RedDashboard, redQueries } from "./red-dashboard.js";
6
- export type { RedDashboardProps, RedDashboardMembers, RedDashboardInstance } from "./red-dashboard.js";
5
+ export { RedDashboard, redQueries, RED_DEFAULT_SPAN_KINDS } from "./red-dashboard.js";
6
+ export type { RedDashboardProps, RedDashboardMembers, RedDashboardInstance, SpanKind } from "./red-dashboard.js";
7
7
  export { SloDashboard, sloQueries } from "./slo-dashboard.js";
8
8
  export type { SloDashboardProps, SloDashboardMembers, SloDashboardInstance } from "./slo-dashboard.js";
9
9
  export { AgentDashboard, agentQueries } from "./agent-dashboard.js";
10
10
  export type { AgentDashboardProps, AgentDashboardMembers, AgentDashboardInstance } from "./agent-dashboard.js";
11
11
  export type { DashboardOptions } from "./shared.js";
12
+ export { SloAlertRules, sloAlertQueries } from "./slo-alert-rules.js";
13
+ export type { SloAlertRulesProps, SloAlertRulesMembers, SloAlertRulesInstance } from "./slo-alert-rules.js";
12
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composites/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC5G,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composites/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC5G,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACnE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -6,6 +6,10 @@
6
6
  * lexicon's `spanMetricsNames()`: its namespace, its histogram unit, the
7
7
  * default dimensions it keeps, and optionally the `prometheus` exporter's
8
8
  * namespace. Renaming the connector's namespace moves every query here.
9
+ *
10
+ * The queries count server and consumer spans only by default, the spans
11
+ * that handle a request or a message, so a service's outgoing calls and
12
+ * its internal spans don't inflate its rate or dilute its error ratio.
9
13
  */
10
14
  import { type CompositeInstance } from "@intentius/chant/composite";
11
15
  import { type PrometheusNaming, type SpanMetricsNames } from "@intentius/chant-lexicon-otel/metric-names";
@@ -24,14 +28,29 @@ export interface RedDashboardProps extends DashboardOptions {
24
28
  exporter?: OTelComponent<"exporter", "prometheus", PrometheusExporterConfig> | PrometheusNaming;
25
29
  /** Duration quantiles, one panel each (default p50, p95 and p99). */
26
30
  quantiles?: number[];
31
+ /**
32
+ * The span kinds the queries count (default server and consumer spans).
33
+ * `[]` counts every kind. With the default, a connector that excludes
34
+ * `span.kind` gets no kind filter; naming kinds for such a connector is
35
+ * an error.
36
+ */
37
+ spanKinds?: SpanKind[];
27
38
  }
39
+ /** The `span_kind` label values the spanmetrics connector writes. */
40
+ export type SpanKind = "SPAN_KIND_UNSPECIFIED" | "SPAN_KIND_INTERNAL" | "SPAN_KIND_SERVER" | "SPAN_KIND_CLIENT" | "SPAN_KIND_PRODUCER" | "SPAN_KIND_CONSUMER";
41
+ /** The kinds `RedDashboard` counts unless told otherwise: the spans that serve a request or consume a message. */
42
+ export declare const RED_DEFAULT_SPAN_KINDS: readonly SpanKind[];
28
43
  export type RedDashboardMembers = {
29
44
  dashboard: DashboardEntity;
30
45
  };
31
46
  /** What `RedDashboard(...)` returns: its dashboard, as `dashboard`. */
32
47
  export type RedDashboardInstance = CompositeInstance<RedDashboardMembers> & RedDashboardMembers;
33
- /** The PromQL the RED dashboard runs, from the connector's names. Exposed for tests and for panels of your own. */
34
- export declare function redQueries(names: SpanMetricsNames, quantiles?: number[], serviceFilter?: string): {
48
+ /**
49
+ * The PromQL the RED dashboard runs, from the connector's names. Exposed for
50
+ * tests and for panels of your own. `spanKinds` defaults to server and
51
+ * consumer spans; `[]` counts every kind.
52
+ */
53
+ export declare function redQueries(names: SpanMetricsNames, quantiles?: number[], serviceFilter?: string, spanKinds?: readonly SpanKind[]): {
35
54
  rate: string;
36
55
  errorRatio: string;
37
56
  duration: {
@@ -1 +1 @@
1
- {"version":3,"file":"red-dashboard.d.ts","sourceRoot":"","sources":["../../src/composites/red-dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAoB,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC5H,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAK/D,OAAO,EASL,KAAK,gBAAgB,EAEtB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD;;;OAGG;IACH,WAAW,EAAE,aAAa,CAAC,WAAW,EAAE,aAAa,EAAE,0BAA0B,CAAC,GAAG,gBAAgB,CAAC;IACtG,mHAAmH;IACnH,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,wBAAwB,CAAC,GAAG,gBAAgB,CAAC;IAChG,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAAE,SAAS,EAAE,eAAe,CAAA;CAAE,CAAC;AAEjE,uEAAuE;AACvE,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC;AAQhG,mHAAmH;AACnH,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,EAAE,SAAS,GAAE,MAAM,EAAsB,EAAE,aAAa,SAAa;;;;;;;;EAetH;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,kGAsEP,CAAC"}
1
+ {"version":3,"file":"red-dashboard.d.ts","sourceRoot":"","sources":["../../src/composites/red-dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAoB,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC5H,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAK/D,OAAO,EAUL,KAAK,gBAAgB,EAEtB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD;;;OAGG;IACH,WAAW,EAAE,aAAa,CAAC,WAAW,EAAE,aAAa,EAAE,0BAA0B,CAAC,GAAG,gBAAgB,CAAC;IACtG,mHAAmH;IACnH,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,wBAAwB,CAAC,GAAG,gBAAgB,CAAC;IAChG,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED,qEAAqE;AACrE,MAAM,MAAM,QAAQ,GAChB,uBAAuB,GACvB,oBAAoB,GACpB,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,oBAAoB,CAAC;AAWzB,kHAAkH;AAClH,eAAO,MAAM,sBAAsB,EAAE,SAAS,QAAQ,EAA8D,CAAC;AAErH,MAAM,MAAM,mBAAmB,GAAG;IAAE,SAAS,EAAE,eAAe,CAAA;CAAE,CAAC;AAEjE,uEAAuE;AACvE,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC;AA2BhG;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,gBAAgB,EACvB,SAAS,GAAE,MAAM,EAAsB,EACvC,aAAa,SAAa,EAC1B,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE;;;;;;;;EAiBhC;AAUD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,kGAuEP,CAAC"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import type { DatasourceInput } from "../query.js";
6
6
  import type { DashboardLinkInput } from "../dashboard.js";
7
+ import type { FolderEntity } from "../folder.js";
7
8
  import type { ThresholdsConfig } from "../schema/dashboard.gen.js";
8
9
  /** Dashboard settings every composite takes; each has a default derived from what it reads. */
9
10
  export interface DashboardOptions {
@@ -14,8 +15,8 @@ export interface DashboardOptions {
14
15
  uid?: string;
15
16
  description?: string;
16
17
  tags?: string[];
17
- /** The Grafana folder to provision it into. */
18
- folder?: string;
18
+ /** The Grafana folder to provision it into: a path, or a `Folder` to pin its uid. */
19
+ folder?: string | FolderEntity;
19
20
  /** Initial time range. */
20
21
  time?: {
21
22
  from: string;
@@ -31,6 +32,13 @@ export type Matcher = [label: string, op: "=" | "!=" | "=~" | "!~", value: strin
31
32
  export declare function selector(metric: string, matchers: Matcher[]): string;
32
33
  /** `sum by (labels) (rate(sel[range]))`, or `sum (...)` with no labels. */
33
34
  export declare function sumRate(sel: string, by: string[], range?: string): string;
35
+ /**
36
+ * `errors / all` as rates summed by `by`, with the numerator padded to zero:
37
+ * `(errors or all * 0) / all`. A group with calls but no error series gets
38
+ * 0 instead of dropping out of the result, so a panel shows 0% rather than
39
+ * "No data" for a service that has had no errors.
40
+ */
41
+ export declare function errorRatio(errorSel: string, allSel: string, by: string[]): string;
34
42
  /** `histogram_quantile(q, sum by (le, labels) (rate(bucket[range])))`. */
35
43
  export declare function quantile(q: number, bucketSel: string, by: string[]): string;
36
44
  /** A number as PromQL and Grafana thresholds write it, without float noise. */
@@ -51,7 +59,7 @@ export declare function dashboardProps(o: DashboardOptions, defaults: {
51
59
  tags: string[];
52
60
  }): {
53
61
  links?: DashboardLinkInput[] | undefined;
54
- folder?: string | undefined;
62
+ folder?: string | FolderEntity | undefined;
55
63
  graphTooltip: "sharedCrosshair";
56
64
  refresh: string;
57
65
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/composites/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,+FAA+F;AAC/F,MAAM,WAAW,gBAAgB;IAC/B,yIAAyI;IACzI,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED,6CAA6C;AAC7C,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAEnF,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAGpE;AAED,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,SAAqB,GAAG,MAAM,CAErF;AAED,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAE3E;AAED,+EAA+E;AAC/E,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAErC;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wDAAwD;AACxD,wBAAgB,MAAM,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAElD;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE7D;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAEzF;AAED,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE;;;;;;;;;;cAnDhH,MAAM;YAAM,MAAM;;EA+DlC;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,CAMtE"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/composites/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,+FAA+F;AAC/F,MAAM,WAAW,gBAAgB;IAC/B,yIAAyI;IACzI,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAC/B,0BAA0B;IAC1B,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED,6CAA6C;AAC7C,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAEnF,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAGpE;AAED,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,SAAqB,GAAG,MAAM,CAErF;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAGjF;AAED,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAE3E;AAED,+EAA+E;AAC/E,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAErC;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wDAAwD;AACxD,wBAAgB,MAAM,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAElD;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE7D;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAEzF;AAED,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE;;;;;;;;;;cA9DhH,MAAM;YAAM,MAAM;;EA0ElC;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,CAMtE"}