@intentius/chant-lexicon-grafana 0.97.0 → 0.99.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 (451) hide show
  1. package/README.md +15 -5
  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/api/apply.d.ts +156 -0
  11. package/dist/api/apply.d.ts.map +1 -0
  12. package/dist/api/bind.d.ts +32 -0
  13. package/dist/api/bind.d.ts.map +1 -0
  14. package/dist/api/client.d.ts +76 -0
  15. package/dist/api/client.d.ts.map +1 -0
  16. package/dist/api/converge.d.ts +33 -0
  17. package/dist/api/converge.d.ts.map +1 -0
  18. package/dist/api/dashboards.d.ts +102 -0
  19. package/dist/api/dashboards.d.ts.map +1 -0
  20. package/dist/api/datasources.d.ts +26 -0
  21. package/dist/api/datasources.d.ts.map +1 -0
  22. package/dist/api/fake-grafana-writes.d.ts +41 -0
  23. package/dist/api/fake-grafana-writes.d.ts.map +1 -0
  24. package/dist/api/fake-grafana.d.ts +61 -0
  25. package/dist/api/fake-grafana.d.ts.map +1 -0
  26. package/dist/api/folders.d.ts +110 -0
  27. package/dist/api/folders.d.ts.map +1 -0
  28. package/dist/api/library-panels.d.ts +52 -0
  29. package/dist/api/library-panels.d.ts.map +1 -0
  30. package/dist/build.d.ts +30 -2
  31. package/dist/build.d.ts.map +1 -1
  32. package/dist/catalog.d.ts +1 -1
  33. package/dist/catalog.d.ts.map +1 -1
  34. package/dist/codegen/docs.d.ts.map +1 -1
  35. package/dist/codegen/schema-types.d.ts +3 -3
  36. package/dist/codegen/schema-types.d.ts.map +1 -1
  37. package/dist/composites/agent-dashboard.d.ts.map +1 -1
  38. package/dist/composites/catalog.d.ts.map +1 -1
  39. package/dist/composites/index.d.ts +4 -2
  40. package/dist/composites/index.d.ts.map +1 -1
  41. package/dist/composites/red-dashboard.d.ts +21 -2
  42. package/dist/composites/red-dashboard.d.ts.map +1 -1
  43. package/dist/composites/shared.d.ts +7 -0
  44. package/dist/composites/shared.d.ts.map +1 -1
  45. package/dist/composites/slo-alert-rules.d.ts +92 -0
  46. package/dist/composites/slo-alert-rules.d.ts.map +1 -0
  47. package/dist/config.d.ts +111 -0
  48. package/dist/config.d.ts.map +1 -0
  49. package/dist/contact-point-secrets.d.ts +17 -0
  50. package/dist/contact-point-secrets.d.ts.map +1 -0
  51. package/dist/dashboard.d.ts +16 -2
  52. package/dist/dashboard.d.ts.map +1 -1
  53. package/dist/datasource-refs.d.ts +95 -0
  54. package/dist/datasource-refs.d.ts.map +1 -0
  55. package/dist/datasource.d.ts +29 -0
  56. package/dist/datasource.d.ts.map +1 -1
  57. package/dist/deep-observe-hooks.d.ts +64 -0
  58. package/dist/deep-observe-hooks.d.ts.map +1 -0
  59. package/dist/deep-observe.d.ts +42 -0
  60. package/dist/deep-observe.d.ts.map +1 -0
  61. package/dist/describe-resources.d.ts +49 -0
  62. package/dist/describe-resources.d.ts.map +1 -0
  63. package/dist/detect.d.ts +28 -1
  64. package/dist/detect.d.ts.map +1 -1
  65. package/dist/export-resources.d.ts +38 -0
  66. package/dist/export-resources.d.ts.map +1 -0
  67. package/dist/import/alerting.d.ts +40 -0
  68. package/dist/import/alerting.d.ts.map +1 -0
  69. package/dist/import/edits.d.ts +47 -0
  70. package/dist/import/edits.d.ts.map +1 -0
  71. package/dist/import/embedded.d.ts +14 -0
  72. package/dist/import/embedded.d.ts.map +1 -0
  73. package/dist/import/generator.d.ts +60 -0
  74. package/dist/import/generator.d.ts.map +1 -0
  75. package/dist/import/live-export.d.ts +108 -0
  76. package/dist/import/live-export.d.ts.map +1 -0
  77. package/dist/import/mappings.d.ts +83 -0
  78. package/dist/import/mappings.d.ts.map +1 -0
  79. package/dist/import/model.d.ts +98 -0
  80. package/dist/import/model.d.ts.map +1 -0
  81. package/dist/import/normalize-alerting.d.ts +26 -0
  82. package/dist/import/normalize-alerting.d.ts.map +1 -0
  83. package/dist/import/normalize.d.ts +74 -0
  84. package/dist/import/normalize.d.ts.map +1 -0
  85. package/dist/import/parser.d.ts +110 -0
  86. package/dist/import/parser.d.ts.map +1 -0
  87. package/dist/import/report.d.ts +26 -0
  88. package/dist/import/report.d.ts.map +1 -0
  89. package/dist/import/testdata/fixtures.d.ts +35 -0
  90. package/dist/import/testdata/fixtures.d.ts.map +1 -0
  91. package/dist/import/v2.d.ts +72 -0
  92. package/dist/import/v2.d.ts.map +1 -0
  93. package/dist/index.d.ts +26 -9
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/integrity.json +18 -10
  96. package/dist/k8s.d.ts +107 -0
  97. package/dist/k8s.d.ts.map +1 -0
  98. package/dist/lint/audit-catalog.d.ts +2 -1
  99. package/dist/lint/audit-catalog.d.ts.map +1 -1
  100. package/dist/lint/post-synth/graf101.d.ts +2 -2
  101. package/dist/lint/post-synth/graf102.d.ts +1 -1
  102. package/dist/lint/post-synth/graf107.d.ts +1 -1
  103. package/dist/lint/post-synth/graf108.d.ts +8 -0
  104. package/dist/lint/post-synth/graf108.d.ts.map +1 -0
  105. package/dist/lint/post-synth/graf109.d.ts +8 -0
  106. package/dist/lint/post-synth/graf109.d.ts.map +1 -0
  107. package/dist/lint/post-synth/graf111.d.ts +8 -0
  108. package/dist/lint/post-synth/graf111.d.ts.map +1 -0
  109. package/dist/lint/post-synth/graf112.d.ts +8 -0
  110. package/dist/lint/post-synth/graf112.d.ts.map +1 -0
  111. package/dist/lint/post-synth/graf113.d.ts +8 -0
  112. package/dist/lint/post-synth/graf113.d.ts.map +1 -0
  113. package/dist/lint/post-synth/graf114.d.ts +8 -0
  114. package/dist/lint/post-synth/graf114.d.ts.map +1 -0
  115. package/dist/lint/post-synth/graf115.d.ts +8 -0
  116. package/dist/lint/post-synth/graf115.d.ts.map +1 -0
  117. package/dist/lint/post-synth/grafana-helpers.d.ts +7 -5
  118. package/dist/lint/post-synth/grafana-helpers.d.ts.map +1 -1
  119. package/dist/lint/post-synth/index.d.ts.map +1 -1
  120. package/dist/lint/rules/literal-secret.d.ts +7 -3
  121. package/dist/lint/rules/literal-secret.d.ts.map +1 -1
  122. package/dist/lsp/hover.d.ts.map +1 -1
  123. package/dist/manifest.json +1 -1
  124. package/dist/members.d.ts +27 -0
  125. package/dist/members.d.ts.map +1 -0
  126. package/dist/meta.json +135 -0
  127. package/dist/okf/index.md +36 -2
  128. package/dist/okf/rules/GRAF002.md +3 -2
  129. package/dist/okf/rules/GRAF101.md +3 -2
  130. package/dist/okf/rules/GRAF102.md +1 -0
  131. package/dist/okf/rules/GRAF108.md +11 -0
  132. package/dist/okf/rules/GRAF109.md +15 -0
  133. package/dist/okf/rules/GRAF111.md +11 -0
  134. package/dist/okf/rules/GRAF112.md +16 -0
  135. package/dist/okf/rules/GRAF113.md +16 -0
  136. package/dist/okf/rules/GRAF114.md +11 -0
  137. package/dist/okf/rules/GRAF115.md +11 -0
  138. package/dist/okf/types/AlertListPanel.md +9 -0
  139. package/dist/okf/types/AlertQuery.md +9 -0
  140. package/dist/okf/types/AlertRule.md +9 -0
  141. package/dist/okf/types/AlertRuleGroup.md +9 -0
  142. package/dist/okf/types/BarChartPanel.md +9 -0
  143. package/dist/okf/types/BarGaugePanel.md +9 -0
  144. package/dist/okf/types/CanvasPanel.md +9 -0
  145. package/dist/okf/types/ClassicConditionsExpression.md +9 -0
  146. package/dist/okf/types/ContactPoint.md +14 -0
  147. package/dist/okf/types/Dashboard.md +1 -0
  148. package/dist/okf/types/Datasource.md +3 -2
  149. package/dist/okf/types/ExternalDatasource.md +15 -0
  150. package/dist/okf/types/FlameGraphPanel.md +9 -0
  151. package/dist/okf/types/GeomapPanel.md +9 -0
  152. package/dist/okf/types/HistogramPanel.md +9 -0
  153. package/dist/okf/types/MathExpression.md +9 -0
  154. package/dist/okf/types/MuteTiming.md +13 -0
  155. package/dist/okf/types/NodeGraphPanel.md +9 -0
  156. package/dist/okf/types/NotificationPolicy.md +9 -0
  157. package/dist/okf/types/NotificationTemplate.md +9 -0
  158. package/dist/okf/types/PieChartPanel.md +9 -0
  159. package/dist/okf/types/ReduceExpression.md +9 -0
  160. package/dist/okf/types/ResampleExpression.md +9 -0
  161. package/dist/okf/types/SqlExpression.md +9 -0
  162. package/dist/okf/types/StateTimelinePanel.md +9 -0
  163. package/dist/okf/types/StatusHistoryPanel.md +9 -0
  164. package/dist/okf/types/ThresholdExpression.md +9 -0
  165. package/dist/okf/types/TrendPanel.md +9 -0
  166. package/dist/okf/types/XYChartPanel.md +9 -0
  167. package/dist/op/activities/grafana-apply.d.ts +75 -0
  168. package/dist/op/activities/grafana-apply.d.ts.map +1 -0
  169. package/dist/op/activities/index.d.ts +9 -0
  170. package/dist/op/activities/index.d.ts.map +1 -0
  171. package/dist/op/builders.d.ts +24 -0
  172. package/dist/op/builders.d.ts.map +1 -0
  173. package/dist/ownership.d.ts +67 -0
  174. package/dist/ownership.d.ts.map +1 -0
  175. package/dist/panel-options.d.ts +65 -0
  176. package/dist/panel-options.d.ts.map +1 -0
  177. package/dist/panels.d.ts +46 -9
  178. package/dist/panels.d.ts.map +1 -1
  179. package/dist/pin.d.ts +29 -7
  180. package/dist/pin.d.ts.map +1 -1
  181. package/dist/plugin.d.ts.map +1 -1
  182. package/dist/promql-check.d.ts +51 -0
  183. package/dist/promql-check.d.ts.map +1 -0
  184. package/dist/query.d.ts +9 -8
  185. package/dist/query.d.ts.map +1 -1
  186. package/dist/rules/graf101.ts +3 -3
  187. package/dist/rules/graf102.ts +1 -1
  188. package/dist/rules/graf107.ts +1 -1
  189. package/dist/rules/graf108.ts +17 -0
  190. package/dist/rules/graf109.ts +17 -0
  191. package/dist/rules/graf111.ts +17 -0
  192. package/dist/rules/graf112.ts +17 -0
  193. package/dist/rules/graf113.ts +17 -0
  194. package/dist/rules/graf114.ts +17 -0
  195. package/dist/rules/graf115.ts +17 -0
  196. package/dist/rules/grafana-helpers.ts +15 -8
  197. package/dist/rules/literal-secret.ts +60 -6
  198. package/dist/schema/barchart.gen.d.ts +198 -0
  199. package/dist/schema/barchart.gen.d.ts.map +1 -0
  200. package/dist/schema/bargauge.gen.d.ts +97 -0
  201. package/dist/schema/bargauge.gen.d.ts.map +1 -0
  202. package/dist/schema/canvas.gen.d.ts +152 -0
  203. package/dist/schema/canvas.gen.d.ts.map +1 -0
  204. package/dist/schema/dashboard.gen.d.ts +196 -21
  205. package/dist/schema/dashboard.gen.d.ts.map +1 -1
  206. package/dist/schema/expr.gen.d.ts +606 -0
  207. package/dist/schema/expr.gen.d.ts.map +1 -0
  208. package/dist/schema/gauge.gen.d.ts.map +1 -1
  209. package/dist/schema/geomap.gen.d.ts +100 -0
  210. package/dist/schema/geomap.gen.d.ts.map +1 -0
  211. package/dist/schema/heatmap.gen.d.ts.map +1 -1
  212. package/dist/schema/histogram.gen.d.ts +132 -0
  213. package/dist/schema/histogram.gen.d.ts.map +1 -0
  214. package/dist/schema/index.d.ts +12 -0
  215. package/dist/schema/index.d.ts.map +1 -1
  216. package/dist/schema/logs.gen.d.ts +1 -0
  217. package/dist/schema/logs.gen.d.ts.map +1 -1
  218. package/dist/schema/loki.gen.d.ts.map +1 -1
  219. package/dist/schema/nodegraph.gen.d.ts +49 -0
  220. package/dist/schema/nodegraph.gen.d.ts.map +1 -0
  221. package/dist/schema/piechart.gen.d.ts +127 -0
  222. package/dist/schema/piechart.gen.d.ts.map +1 -0
  223. package/dist/schema/prometheus.gen.d.ts.map +1 -1
  224. package/dist/schema/stat.gen.d.ts.map +1 -1
  225. package/dist/schema/statetimeline.gen.d.ts +124 -0
  226. package/dist/schema/statetimeline.gen.d.ts.map +1 -0
  227. package/dist/schema/statushistory.gen.d.ts +114 -0
  228. package/dist/schema/statushistory.gen.d.ts.map +1 -0
  229. package/dist/schema/table.gen.d.ts +22 -3
  230. package/dist/schema/table.gen.d.ts.map +1 -1
  231. package/dist/schema/tempo.gen.d.ts.map +1 -1
  232. package/dist/schema/text.gen.d.ts.map +1 -1
  233. package/dist/schema/timeseries.gen.d.ts +5 -1
  234. package/dist/schema/timeseries.gen.d.ts.map +1 -1
  235. package/dist/schema/trend.gen.d.ts +180 -0
  236. package/dist/schema/trend.gen.d.ts.map +1 -0
  237. package/dist/schema/xychart.gen.d.ts +145 -0
  238. package/dist/schema/xychart.gen.d.ts.map +1 -0
  239. package/dist/schema-validate.d.ts +30 -4
  240. package/dist/schema-validate.d.ts.map +1 -1
  241. package/dist/serializer.d.ts +11 -3
  242. package/dist/serializer.d.ts.map +1 -1
  243. package/dist/skill-defs.d.ts.map +1 -1
  244. package/dist/skills/chant-grafana-alerting.md +49 -0
  245. package/dist/skills/chant-grafana-provisioning.md +3 -3
  246. package/dist/skills/chant-grafana.md +12 -6
  247. package/dist/spec/fetch-units-cli.d.ts +3 -0
  248. package/dist/spec/fetch-units-cli.d.ts.map +1 -0
  249. package/dist/spec/overlay.d.ts +43 -0
  250. package/dist/spec/overlay.d.ts.map +1 -0
  251. package/dist/spec/schemas.d.ts +13 -7
  252. package/dist/spec/schemas.d.ts.map +1 -1
  253. package/dist/spec/units.d.ts +35 -0
  254. package/dist/spec/units.d.ts.map +1 -0
  255. package/dist/spec/units.gen.d.ts +2 -0
  256. package/dist/spec/units.gen.d.ts.map +1 -0
  257. package/dist/transformations.d.ts +459 -0
  258. package/dist/transformations.d.ts.map +1 -0
  259. package/dist/util.d.ts +6 -0
  260. package/dist/util.d.ts.map +1 -1
  261. package/dist/validate-alerting.d.ts +65 -0
  262. package/dist/validate-alerting.d.ts.map +1 -0
  263. package/dist/validate-output.d.ts +49 -9
  264. package/dist/validate-output.d.ts.map +1 -1
  265. package/dist/validate.d.ts.map +1 -1
  266. package/dist/variables.d.ts +7 -2
  267. package/dist/variables.d.ts.map +1 -1
  268. package/package.json +12 -4
  269. package/src/actions/actions.test.ts +24 -0
  270. package/src/actions/grafana.ts +40 -0
  271. package/src/actions/index.ts +1 -0
  272. package/src/alerting-build.ts +376 -0
  273. package/src/alerting.e2e.test.ts +212 -0
  274. package/src/alerting.test.ts +272 -0
  275. package/src/alerting.ts +435 -0
  276. package/src/api/apply.test.ts +238 -0
  277. package/src/api/apply.ts +384 -0
  278. package/src/api/bind.ts +58 -0
  279. package/src/api/client.ts +148 -0
  280. package/src/api/converge.ts +63 -0
  281. package/src/api/dashboards.ts +247 -0
  282. package/src/api/datasources.ts +33 -0
  283. package/src/api/fake-grafana-writes.ts +201 -0
  284. package/src/api/fake-grafana.ts +186 -0
  285. package/src/api/folders.ts +265 -0
  286. package/src/api/library-panels.ts +101 -0
  287. package/src/build.test.ts +210 -5
  288. package/src/build.ts +180 -43
  289. package/src/catalog.ts +86 -2
  290. package/src/codegen/docs.ts +42 -9
  291. package/src/codegen/schema-types.ts +16 -6
  292. package/src/composites/agent-dashboard.ts +6 -3
  293. package/src/composites/catalog.test.ts +2 -2
  294. package/src/composites/catalog.ts +82 -0
  295. package/src/composites/composites.test.ts +73 -9
  296. package/src/composites/index.ts +4 -2
  297. package/src/composites/queries.e2e.test.ts +374 -0
  298. package/src/composites/red-dashboard.ts +83 -12
  299. package/src/composites/shared.ts +11 -0
  300. package/src/composites/slo-alert-rules.ts +149 -0
  301. package/src/config.test.ts +61 -0
  302. package/src/config.ts +138 -0
  303. package/src/contact-point-secrets.ts +63 -0
  304. package/src/dashboard.ts +16 -2
  305. package/src/datasource-refs.test.ts +56 -0
  306. package/src/datasource-refs.ts +189 -0
  307. package/src/datasource.ts +52 -0
  308. package/src/deep-observe-hooks.ts +252 -0
  309. package/src/deep-observe.test.ts +265 -0
  310. package/src/deep-observe.ts +164 -0
  311. package/src/describe-resources.test.ts +255 -0
  312. package/src/describe-resources.ts +209 -0
  313. package/src/detect.ts +79 -2
  314. package/src/export-resources.test.ts +129 -0
  315. package/src/export-resources.ts +84 -0
  316. package/src/generated/lexicon-grafana.json +135 -0
  317. package/src/import/alerting-roundtrip.test.ts +161 -0
  318. package/src/import/alerting.ts +500 -0
  319. package/src/import/edits.ts +95 -0
  320. package/src/import/embedded.test.ts +45 -0
  321. package/src/import/embedded.ts +47 -0
  322. package/src/import/generated-types.e2e.test.ts +118 -0
  323. package/src/import/generator.test.ts +210 -0
  324. package/src/import/generator.ts +462 -0
  325. package/src/import/live-export.ts +264 -0
  326. package/src/import/mappings.ts +264 -0
  327. package/src/import/model.ts +110 -0
  328. package/src/import/normalize-alerting.ts +101 -0
  329. package/src/import/normalize.test.ts +117 -0
  330. package/src/import/normalize.ts +364 -0
  331. package/src/import/parser.test.ts +440 -0
  332. package/src/import/parser.ts +1236 -0
  333. package/src/import/report.ts +62 -0
  334. package/src/import/roundtrip.test.ts +468 -0
  335. package/src/import/testdata/fixtures.ts +129 -0
  336. package/src/import/v2.test.ts +292 -0
  337. package/src/import/v2.ts +803 -0
  338. package/src/import.e2e.test.ts +31 -84
  339. package/src/import.test.ts +9 -3
  340. package/src/index.ts +190 -5
  341. package/src/k8s.test.ts +98 -0
  342. package/src/k8s.ts +197 -0
  343. package/src/lint/audit-catalog.ts +60 -3
  344. package/src/lint/core-lint.test.ts +43 -0
  345. package/src/lint/post-synth/graf101.ts +3 -3
  346. package/src/lint/post-synth/graf102.ts +1 -1
  347. package/src/lint/post-synth/graf107.ts +1 -1
  348. package/src/lint/post-synth/graf108.ts +17 -0
  349. package/src/lint/post-synth/graf109.ts +17 -0
  350. package/src/lint/post-synth/graf111.ts +17 -0
  351. package/src/lint/post-synth/graf112.ts +17 -0
  352. package/src/lint/post-synth/graf113.ts +17 -0
  353. package/src/lint/post-synth/graf114.ts +17 -0
  354. package/src/lint/post-synth/graf115.ts +17 -0
  355. package/src/lint/post-synth/grafana-helpers.ts +15 -8
  356. package/src/lint/post-synth/index.ts +14 -0
  357. package/src/lint/post-synth/post-synth.test.ts +235 -11
  358. package/src/lint/rules/literal-secret.ts +60 -6
  359. package/src/lint/rules/rules.test.ts +27 -0
  360. package/src/lsp/completions.test.ts +5 -0
  361. package/src/lsp/hover.test.ts +7 -0
  362. package/src/lsp/hover.ts +8 -1
  363. package/src/members.ts +68 -0
  364. package/src/observe.e2e.test.ts +255 -0
  365. package/src/op/activities/grafana-apply.e2e.test.ts +175 -0
  366. package/src/op/activities/grafana-apply.test.ts +229 -0
  367. package/src/op/activities/grafana-apply.ts +171 -0
  368. package/src/op/activities/index.ts +8 -0
  369. package/src/op/builders.test.ts +40 -0
  370. package/src/op/builders.ts +34 -0
  371. package/src/ownership.ts +103 -0
  372. package/src/panel-options.ts +66 -0
  373. package/src/panels.test.ts +51 -0
  374. package/src/panels.ts +148 -10
  375. package/src/pin.ts +57 -6
  376. package/src/plugin.test.ts +5 -2
  377. package/src/plugin.ts +66 -0
  378. package/src/promql-check.test.ts +108 -0
  379. package/src/promql-check.ts +189 -0
  380. package/src/query.ts +13 -8
  381. package/src/schema/barchart.gen.ts +221 -0
  382. package/src/schema/bargauge.gen.ts +111 -0
  383. package/src/schema/canvas.gen.ts +176 -0
  384. package/src/schema/dashboard.gen.ts +206 -22
  385. package/src/schema/expr.gen.ts +618 -0
  386. package/src/schema/gauge.gen.ts +2 -1
  387. package/src/schema/geomap.gen.ts +112 -0
  388. package/src/schema/heatmap.gen.ts +2 -1
  389. package/src/schema/histogram.gen.ts +151 -0
  390. package/src/schema/index.ts +12 -0
  391. package/src/schema/logs.gen.ts +3 -1
  392. package/src/schema/loki.gen.ts +2 -1
  393. package/src/schema/nodegraph.gen.ts +58 -0
  394. package/src/schema/piechart.gen.ts +146 -0
  395. package/src/schema/prometheus.gen.ts +2 -1
  396. package/src/schema/stat.gen.ts +2 -1
  397. package/src/schema/statetimeline.gen.ts +143 -0
  398. package/src/schema/statushistory.gen.ts +132 -0
  399. package/src/schema/table.gen.ts +27 -4
  400. package/src/schema/tempo.gen.ts +2 -1
  401. package/src/schema/text.gen.ts +2 -1
  402. package/src/schema/timeseries.gen.ts +7 -2
  403. package/src/schema/trend.gen.ts +208 -0
  404. package/src/schema/xychart.gen.ts +167 -0
  405. package/src/schema-overlay.test.ts +282 -0
  406. package/src/schema-validate.ts +141 -50
  407. package/src/schema.test.ts +4 -2
  408. package/src/serializer.test.ts +13 -1
  409. package/src/serializer.ts +11 -3
  410. package/src/skill-defs.ts +17 -0
  411. package/src/skills/chant-grafana-alerting.md +49 -0
  412. package/src/skills/chant-grafana-provisioning.md +3 -3
  413. package/src/skills/chant-grafana.md +12 -6
  414. package/src/spec/fetch-cli.ts +3 -3
  415. package/src/spec/fetch-units-cli.ts +37 -0
  416. package/src/spec/overlay/canvas.overlay.json +142 -0
  417. package/src/spec/overlay/dashboard.overlay.json +378 -0
  418. package/src/spec/overlay/expr.overlay.json +14 -0
  419. package/src/spec/overlay/geomap.overlay.json +35 -0
  420. package/src/spec/overlay/logs.overlay.json +14 -0
  421. package/src/spec/overlay/nodegraph.overlay.json +31 -0
  422. package/src/spec/overlay/piechart.overlay.json +17 -0
  423. package/src/spec/overlay/table.overlay.json +84 -0
  424. package/src/spec/overlay/timeseries.overlay.json +21 -0
  425. package/src/spec/overlay/trend.overlay.json +17 -0
  426. package/src/spec/overlay/xychart.overlay.json +16 -0
  427. package/src/spec/overlay.ts +105 -0
  428. package/src/spec/schemas/barchart.jsonschema.json +419 -0
  429. package/src/spec/schemas/bargauge.jsonschema.json +224 -0
  430. package/src/spec/schemas/canvas.jsonschema.json +356 -0
  431. package/src/spec/schemas/dashboardv2.jsonschema.json +3387 -0
  432. package/src/spec/schemas/expr.jsonschema.json +987 -0
  433. package/src/spec/schemas/geomap.jsonschema.json +220 -0
  434. package/src/spec/schemas/histogram.jsonschema.json +308 -0
  435. package/src/spec/schemas/nodegraph.jsonschema.json +77 -0
  436. package/src/spec/schemas/piechart.jsonschema.json +275 -0
  437. package/src/spec/schemas/statetimeline.jsonschema.json +324 -0
  438. package/src/spec/schemas/statushistory.jsonschema.json +292 -0
  439. package/src/spec/schemas/trend.jsonschema.json +449 -0
  440. package/src/spec/schemas/xychart.jsonschema.json +428 -0
  441. package/src/spec/schemas.ts +22 -10
  442. package/src/spec/units.gen.ts +281 -0
  443. package/src/spec/units.ts +77 -0
  444. package/src/transformations.test.ts +65 -0
  445. package/src/transformations.ts +574 -0
  446. package/src/util.ts +8 -0
  447. package/src/validate-alerting.test.ts +255 -0
  448. package/src/validate-alerting.ts +428 -0
  449. package/src/validate-output.ts +332 -101
  450. package/src/validate.ts +14 -0
  451. package/src/variables.ts +7 -2
@@ -0,0 +1,8 @@
1
+ /**
2
+ * GRAF113: Alerting routes to a contact point or mute timing the build does not declare, or a policy matcher does not parse
3
+ *
4
+ * The notification policy tree's receivers, every rule's notification_settings.receiver, and each mute_time_intervals and active_time_intervals entry must name a ContactPoint or MuteTiming the build declares (grafana-default-email exists in every Grafana). Policy object_matchers must be [label, op, value] with op =, !=, =~ or !~ and a valid regex; matchers must parse as Alertmanager matchers. With no contact point or mute timing declared it warns once that it cannot check.
5
+ */
6
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
7
+ export declare const graf113: PostSynthCheck;
8
+ //# sourceMappingURL=graf113.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graf113.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/graf113.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,kCAAkC,CAAC;AAG9G,eAAO,MAAM,OAAO,EAAE,cAOrB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * GRAF114: An alerting uid, name, title or interval Grafana rejects, or one declared twice
3
+ *
4
+ * Rule uids and contact point receiver uids must be 1-40 letters, digits, - and _; rules need a title of at most 190 characters; groups need a name, a folder and an interval that is a positive multiple of 10s; for and keepFiringFor must be durations; noDataState and execErrState must be values Grafana knows. Rule uids, group names within a folder, contact point names, receiver uids, mute timing and template names must be unique per organisation, and each organisation has one policy tree. Grafana refuses the file otherwise, and one refused file stops it provisioning every alerting file.
5
+ */
6
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
7
+ export declare const graf114: PostSynthCheck;
8
+ //# sourceMappingURL=graf114.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graf114.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/graf114.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,kCAAkC,CAAC;AAG9G,eAAO,MAAM,OAAO,EAAE,cAOrB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * GRAF115: A unit Grafana doesn't know
3
+ *
4
+ * Each panel's `fieldConfig.defaults.unit`, every `unit` override, a heatmap's `options.yAxis.unit` and `options.cellValues.unit`, and a legacy graph panel's `yaxes[].format` are looked up in Grafana's unit registry at v13.2.2 (`src/spec/units.gen.ts`). Custom units (`prefix:`, `suffix:`, `time:`, `si:`, `count:`, `currency:`, `bool:`) pass. Anything else Grafana shows as a literal suffix, so it is a warning that names the closest registered id.
5
+ */
6
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
7
+ export declare const graf115: PostSynthCheck;
8
+ //# sourceMappingURL=graf115.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graf115.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/graf115.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,kCAAkC,CAAC;AAG9G,eAAO,MAAM,OAAO,EAAE,cAOrB,CAAC"}
@@ -1,15 +1,17 @@
1
1
  /**
2
- * Shared plumbing for the grafana post-synth checks: find the dashboards and
3
- * provisioned datasources in a build's output, and run the plain-function
4
- * checks in `validate-output.ts` over them.
2
+ * Shared plumbing for the grafana post-synth checks: find the dashboards,
3
+ * provisioned datasources, dashboard providers and alerting provisioning
4
+ * files in a build's output, and run the plain-function checks in
5
+ * `validate-output.ts` over them.
5
6
  *
6
7
  * Any output file shaped like a dashboard or a datasource provisioning file
7
8
  * counts, not only the grafana lexicon's own, so a dashboard another lexicon
8
- * embeds is checked the same way.
9
+ * embeds is checked the same way. `ExternalDatasource` declarations are never
10
+ * written to a provisioning file, so they come from the build's entities.
9
11
  */
10
12
  import type { PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
11
13
  import { type GrafanaArtifacts, type GrafanaIssueCode } from "../../validate-output.js";
12
- /** Every dashboard and provisioned datasource in the build's output. */
14
+ /** Every dashboard, provisioned datasource and dashboard provider and alerting provisioning file in the build's output, and every `ExternalDatasource` it declares. */
13
15
  export declare function grafanaArtifacts(ctx: PostSynthContext): GrafanaArtifacts;
14
16
  /** Diagnostics for one check across the build's output. */
15
17
  export declare function grafanaDiagnostics(ctx: PostSynthContext, code: GrafanaIssueCode): PostSynthDiagnostic[];
@@ -1 +1 @@
1
- {"version":3,"file":"grafana-helpers.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/grafana-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAK9F,OAAO,EAAa,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAiBhG,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAuBxE;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAQvG"}
1
+ {"version":3,"file":"grafana-helpers.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/grafana-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAM9F,OAAO,EAAa,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAiBhG,uKAAuK;AACvK,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CA2BxE;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAQvG"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AASvE,eAAO,MAAM,eAAe,EAAE,cAAc,EAQ3C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAgBvE,eAAO,MAAM,eAAe,EAAE,cAAc,EAe3C,CAAC"}
@@ -1,9 +1,13 @@
1
1
  import type { LintRule } from "@intentius/chant/lint/rule";
2
2
  /**
3
- * GRAF002: a datasource secret written as a literal.
3
+ * GRAF002: a datasource or contact point secret written as a literal.
4
4
  *
5
- * `secureJsonData` holds passwords, tokens and TLS keys. A literal there is a
6
- * secret in the repository and in the emitted provisioning file. Grafana
5
+ * A datasource's `secureJsonData` holds passwords, tokens and TLS keys, and
6
+ * so do the settings Grafana stores encrypted for each contact point
7
+ * integration (a Slack webhook `url`, a PagerDuty `integrationKey`, a
8
+ * webhook's `authorization_credentials`; see `CONTACT_POINT_SECRET_SETTINGS`).
9
+ * A literal there is a secret in the repository and in the emitted
10
+ * provisioning file. Grafana
7
11
  * expands `$__env{NAME}`, `$__file{/path}` and `${NAME}` when it reads the
8
12
  * file, so the declaration never needs the value. A value written as a
9
13
  * named `const` in the same file is followed.
@@ -1 +1 @@
1
- {"version":3,"file":"literal-secret.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/literal-secret.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,4BAA4B,CAAC;AAMxF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,QA+B/B,CAAC"}
1
+ {"version":3,"file":"literal-secret.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/literal-secret.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,4BAA4B,CAAC;AAyBxF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,EAAE,QA8D/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hover.d.ts","sourceRoot":"","sources":["../../src/lsp/hover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAY1E,6GAA6G;AAC7G,wBAAgB,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAE9D"}
1
+ {"version":3,"file":"hover.d.ts","sourceRoot":"","sources":["../../src/lsp/hover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAa1E,6GAA6G;AAC7G,wBAAgB,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAE9D"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "grafana",
3
- "version": "0.97.0",
3
+ "version": "0.99.0",
4
4
  "chantVersion": ">=0.1.0",
5
5
  "namespace": "Grafana",
6
6
  "intrinsics": [],
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Which dashboard holds a declared panel, row, query or variable (#2946).
3
+ *
4
+ * Panels, rows, queries and variables are property-kind declarables: they
5
+ * exist in Grafana only inside a dashboard's JSON. Core's live diff still
6
+ * hands every exported declarable to `describeResources`, so a project that
7
+ * exports its panels (as every example and every imported dashboard does)
8
+ * asks the reader about each one. Answering "absent" would make `lifecycle
9
+ * plan` propose creating it, and "not observed" would report a hole for every
10
+ * panel of a dashboard that was read in full. The honest answer is the
11
+ * dashboard's own verdict: a panel is there when the dashboard holding it is
12
+ * there, and its properties are compared as part of that dashboard's tree.
13
+ *
14
+ * Membership is by identity: a dashboard's props hold the very declarable
15
+ * objects, so the member is found by walking them, whatever nests it (a row's
16
+ * panels, a panel's queries, a `repeat` or `datasource` variable).
17
+ */
18
+ type Entities = Map<string, {
19
+ entityType: string;
20
+ props: Record<string, unknown>;
21
+ }>;
22
+ /** Member entity name -> the name of the first declared dashboard holding it. Dashboards and datasources are not members. */
23
+ export declare function dashboardMembers(entities: Entities): Map<string, string>;
24
+ /** Entity types that only ever live inside a dashboard. */
25
+ export declare function isDashboardPart(entityType: string): boolean;
26
+ export {};
27
+ //# sourceMappingURL=members.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../src/members.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC;AAuBpF,6HAA6H;AAC7H,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAexE;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE3D"}
package/dist/meta.json CHANGED
@@ -1,9 +1,54 @@
1
1
  {
2
+ "AlertListPanel": {
3
+ "resourceType": "Grafana::Panel::alertlist",
4
+ "kind": "resource",
5
+ "lexicon": "grafana"
6
+ },
7
+ "AlertQuery": {
8
+ "resourceType": "Grafana::AlertQuery",
9
+ "kind": "resource",
10
+ "lexicon": "grafana"
11
+ },
12
+ "AlertRule": {
13
+ "resourceType": "Grafana::AlertRule",
14
+ "kind": "resource",
15
+ "lexicon": "grafana"
16
+ },
17
+ "AlertRuleGroup": {
18
+ "resourceType": "Grafana::AlertRuleGroup",
19
+ "kind": "resource",
20
+ "lexicon": "grafana"
21
+ },
22
+ "BarChartPanel": {
23
+ "resourceType": "Grafana::Panel::barchart",
24
+ "kind": "resource",
25
+ "lexicon": "grafana"
26
+ },
27
+ "BarGaugePanel": {
28
+ "resourceType": "Grafana::Panel::bargauge",
29
+ "kind": "resource",
30
+ "lexicon": "grafana"
31
+ },
32
+ "CanvasPanel": {
33
+ "resourceType": "Grafana::Panel::canvas",
34
+ "kind": "resource",
35
+ "lexicon": "grafana"
36
+ },
37
+ "ClassicConditionsExpression": {
38
+ "resourceType": "Grafana::Expression::classic_conditions",
39
+ "kind": "resource",
40
+ "lexicon": "grafana"
41
+ },
2
42
  "ConstantVariable": {
3
43
  "resourceType": "Grafana::Variable::constant",
4
44
  "kind": "resource",
5
45
  "lexicon": "grafana"
6
46
  },
47
+ "ContactPoint": {
48
+ "resourceType": "Grafana::ContactPoint",
49
+ "kind": "resource",
50
+ "lexicon": "grafana"
51
+ },
7
52
  "CustomVariable": {
8
53
  "resourceType": "Grafana::Variable::custom",
9
54
  "kind": "resource",
@@ -29,16 +74,36 @@
29
74
  "kind": "resource",
30
75
  "lexicon": "grafana"
31
76
  },
77
+ "ExternalDatasource": {
78
+ "resourceType": "Grafana::ExternalDatasource",
79
+ "kind": "resource",
80
+ "lexicon": "grafana"
81
+ },
82
+ "FlameGraphPanel": {
83
+ "resourceType": "Grafana::Panel::flamegraph",
84
+ "kind": "resource",
85
+ "lexicon": "grafana"
86
+ },
32
87
  "GaugePanel": {
33
88
  "resourceType": "Grafana::Panel::gauge",
34
89
  "kind": "resource",
35
90
  "lexicon": "grafana"
36
91
  },
92
+ "GeomapPanel": {
93
+ "resourceType": "Grafana::Panel::geomap",
94
+ "kind": "resource",
95
+ "lexicon": "grafana"
96
+ },
37
97
  "HeatmapPanel": {
38
98
  "resourceType": "Grafana::Panel::heatmap",
39
99
  "kind": "resource",
40
100
  "lexicon": "grafana"
41
101
  },
102
+ "HistogramPanel": {
103
+ "resourceType": "Grafana::Panel::histogram",
104
+ "kind": "resource",
105
+ "lexicon": "grafana"
106
+ },
42
107
  "IntervalVariable": {
43
108
  "resourceType": "Grafana::Variable::interval",
44
109
  "kind": "resource",
@@ -54,6 +119,36 @@
54
119
  "kind": "resource",
55
120
  "lexicon": "grafana"
56
121
  },
122
+ "MathExpression": {
123
+ "resourceType": "Grafana::Expression::math",
124
+ "kind": "resource",
125
+ "lexicon": "grafana"
126
+ },
127
+ "MuteTiming": {
128
+ "resourceType": "Grafana::MuteTiming",
129
+ "kind": "resource",
130
+ "lexicon": "grafana"
131
+ },
132
+ "NodeGraphPanel": {
133
+ "resourceType": "Grafana::Panel::nodeGraph",
134
+ "kind": "resource",
135
+ "lexicon": "grafana"
136
+ },
137
+ "NotificationPolicy": {
138
+ "resourceType": "Grafana::NotificationPolicy",
139
+ "kind": "resource",
140
+ "lexicon": "grafana"
141
+ },
142
+ "NotificationTemplate": {
143
+ "resourceType": "Grafana::NotificationTemplate",
144
+ "kind": "resource",
145
+ "lexicon": "grafana"
146
+ },
147
+ "PieChartPanel": {
148
+ "resourceType": "Grafana::Panel::piechart",
149
+ "kind": "resource",
150
+ "lexicon": "grafana"
151
+ },
57
152
  "PromQuery": {
58
153
  "resourceType": "Grafana::Query::prometheus",
59
154
  "kind": "resource",
@@ -64,16 +159,41 @@
64
159
  "kind": "resource",
65
160
  "lexicon": "grafana"
66
161
  },
162
+ "ReduceExpression": {
163
+ "resourceType": "Grafana::Expression::reduce",
164
+ "kind": "resource",
165
+ "lexicon": "grafana"
166
+ },
167
+ "ResampleExpression": {
168
+ "resourceType": "Grafana::Expression::resample",
169
+ "kind": "resource",
170
+ "lexicon": "grafana"
171
+ },
67
172
  "Row": {
68
173
  "resourceType": "Grafana::Row",
69
174
  "kind": "resource",
70
175
  "lexicon": "grafana"
71
176
  },
177
+ "SqlExpression": {
178
+ "resourceType": "Grafana::Expression::sql",
179
+ "kind": "resource",
180
+ "lexicon": "grafana"
181
+ },
182
+ "StateTimelinePanel": {
183
+ "resourceType": "Grafana::Panel::state-timeline",
184
+ "kind": "resource",
185
+ "lexicon": "grafana"
186
+ },
72
187
  "StatPanel": {
73
188
  "resourceType": "Grafana::Panel::stat",
74
189
  "kind": "resource",
75
190
  "lexicon": "grafana"
76
191
  },
192
+ "StatusHistoryPanel": {
193
+ "resourceType": "Grafana::Panel::status-history",
194
+ "kind": "resource",
195
+ "lexicon": "grafana"
196
+ },
77
197
  "TablePanel": {
78
198
  "resourceType": "Grafana::Panel::table",
79
199
  "kind": "resource",
@@ -94,6 +214,11 @@
94
214
  "kind": "resource",
95
215
  "lexicon": "grafana"
96
216
  },
217
+ "ThresholdExpression": {
218
+ "resourceType": "Grafana::Expression::threshold",
219
+ "kind": "resource",
220
+ "lexicon": "grafana"
221
+ },
97
222
  "TimeSeriesPanel": {
98
223
  "resourceType": "Grafana::Panel::timeseries",
99
224
  "kind": "resource",
@@ -103,5 +228,15 @@
103
228
  "resourceType": "Grafana::Panel::traces",
104
229
  "kind": "resource",
105
230
  "lexicon": "grafana"
231
+ },
232
+ "TrendPanel": {
233
+ "resourceType": "Grafana::Panel::trend",
234
+ "kind": "resource",
235
+ "lexicon": "grafana"
236
+ },
237
+ "XYChartPanel": {
238
+ "resourceType": "Grafana::Panel::xychart",
239
+ "kind": "resource",
240
+ "lexicon": "grafana"
106
241
  }
107
242
  }
package/dist/okf/index.md CHANGED
@@ -4,36 +4,70 @@ okf_version: '0.2'
4
4
 
5
5
  # Resource types
6
6
 
7
+ * [AlertListPanel](/types/AlertListPanel.md) - Grafana::Panel::alertlist
8
+ * [AlertQuery](/types/AlertQuery.md) - Grafana::AlertQuery
9
+ * [AlertRule](/types/AlertRule.md) - Grafana::AlertRule
10
+ * [AlertRuleGroup](/types/AlertRuleGroup.md) - Grafana::AlertRuleGroup
11
+ * [BarChartPanel](/types/BarChartPanel.md) - Grafana::Panel::barchart
12
+ * [BarGaugePanel](/types/BarGaugePanel.md) - Grafana::Panel::bargauge
13
+ * [CanvasPanel](/types/CanvasPanel.md) - Grafana::Panel::canvas
14
+ * [ClassicConditionsExpression](/types/ClassicConditionsExpression.md) - Grafana::Expression::classic_conditions
7
15
  * [ConstantVariable](/types/ConstantVariable.md) - Grafana::Variable::constant
16
+ * [ContactPoint](/types/ContactPoint.md) - Grafana::ContactPoint
8
17
  * [CustomVariable](/types/CustomVariable.md) - Grafana::Variable::custom
9
18
  * [Dashboard](/types/Dashboard.md) - Grafana::Dashboard
10
19
  * [DashboardProvider](/types/DashboardProvider.md) - Grafana::DashboardProvider
11
20
  * [Datasource](/types/Datasource.md) - Grafana::Datasource
12
21
  * [DatasourceVariable](/types/DatasourceVariable.md) - Grafana::Variable::datasource
22
+ * [ExternalDatasource](/types/ExternalDatasource.md) - Grafana::ExternalDatasource
23
+ * [FlameGraphPanel](/types/FlameGraphPanel.md) - Grafana::Panel::flamegraph
13
24
  * [GaugePanel](/types/GaugePanel.md) - Grafana::Panel::gauge
25
+ * [GeomapPanel](/types/GeomapPanel.md) - Grafana::Panel::geomap
14
26
  * [HeatmapPanel](/types/HeatmapPanel.md) - Grafana::Panel::heatmap
27
+ * [HistogramPanel](/types/HistogramPanel.md) - Grafana::Panel::histogram
15
28
  * [IntervalVariable](/types/IntervalVariable.md) - Grafana::Variable::interval
16
29
  * [LogsPanel](/types/LogsPanel.md) - Grafana::Panel::logs
17
30
  * [LokiQuery](/types/LokiQuery.md) - Grafana::Query::loki
31
+ * [MathExpression](/types/MathExpression.md) - Grafana::Expression::math
32
+ * [MuteTiming](/types/MuteTiming.md) - Grafana::MuteTiming
33
+ * [NodeGraphPanel](/types/NodeGraphPanel.md) - Grafana::Panel::nodeGraph
34
+ * [NotificationPolicy](/types/NotificationPolicy.md) - Grafana::NotificationPolicy
35
+ * [NotificationTemplate](/types/NotificationTemplate.md) - Grafana::NotificationTemplate
36
+ * [PieChartPanel](/types/PieChartPanel.md) - Grafana::Panel::piechart
18
37
  * [PromQuery](/types/PromQuery.md) - Grafana::Query::prometheus
19
38
  * [QueryVariable](/types/QueryVariable.md) - Grafana::Variable::query
39
+ * [ReduceExpression](/types/ReduceExpression.md) - Grafana::Expression::reduce
40
+ * [ResampleExpression](/types/ResampleExpression.md) - Grafana::Expression::resample
20
41
  * [Row](/types/Row.md) - Grafana::Row
42
+ * [SqlExpression](/types/SqlExpression.md) - Grafana::Expression::sql
43
+ * [StateTimelinePanel](/types/StateTimelinePanel.md) - Grafana::Panel::state-timeline
21
44
  * [StatPanel](/types/StatPanel.md) - Grafana::Panel::stat
45
+ * [StatusHistoryPanel](/types/StatusHistoryPanel.md) - Grafana::Panel::status-history
22
46
  * [TablePanel](/types/TablePanel.md) - Grafana::Panel::table
23
47
  * [TempoQuery](/types/TempoQuery.md) - Grafana::Query::tempo
24
48
  * [TextboxVariable](/types/TextboxVariable.md) - Grafana::Variable::textbox
25
49
  * [TextPanel](/types/TextPanel.md) - Grafana::Panel::text
50
+ * [ThresholdExpression](/types/ThresholdExpression.md) - Grafana::Expression::threshold
26
51
  * [TimeSeriesPanel](/types/TimeSeriesPanel.md) - Grafana::Panel::timeseries
27
52
  * [TracesPanel](/types/TracesPanel.md) - Grafana::Panel::traces
53
+ * [TrendPanel](/types/TrendPanel.md) - Grafana::Panel::trend
54
+ * [XYChartPanel](/types/XYChartPanel.md) - Grafana::Panel::xychart
28
55
 
29
56
  # Rules
30
57
 
31
58
  * [GRAF001](/rules/GRAF001.md) - a uid Grafana rejects, or a variable name queries cannot reference.
32
- * [GRAF002](/rules/GRAF002.md) - a datasource secret written as a literal.
33
- * [GRAF101](/rules/GRAF101.md) - A panel, query or variable uses a datasource no Datasource in the build declares
59
+ * [GRAF002](/rules/GRAF002.md) - a datasource or contact point secret written as a literal.
60
+ * [GRAF101](/rules/GRAF101.md) - A panel, query or variable uses a datasource no Datasource or ExternalDatasource in the build declares
34
61
  * [GRAF102](/rules/GRAF102.md) - A query is sent to a datasource of another plugin type
35
62
  * [GRAF103](/rules/GRAF103.md) - A query, title, datasource or repeat uses a variable the dashboard does not declare
36
63
  * [GRAF104](/rules/GRAF104.md) - Two dashboards, datasources, panels, variables or queries share an id
37
64
  * [GRAF105](/rules/GRAF105.md) - A panel does not fit the 24-column grid, or overlaps another panel
38
65
  * [GRAF106](/rules/GRAF106.md) - A dashboard or datasource uid Grafana rejects, or a dashboard with no title
39
66
  * [GRAF107](/rules/GRAF107.md) - A dashboard does not match the pinned Grafana schema
67
+ * [GRAF108](/rules/GRAF108.md) - A query sent to Prometheus is not valid PromQL
68
+ * [GRAF109](/rules/GRAF109.md) - Dashboard provisioning puts a dashboard somewhere other than its declared folder, or loads it twice
69
+ * [GRAF111](/rules/GRAF111.md) - An alert rule's condition, expression inputs or refIds do not fit together
70
+ * [GRAF112](/rules/GRAF112.md) - An alert rule queries a datasource the build does not declare, or of another type
71
+ * [GRAF113](/rules/GRAF113.md) - Alerting routes to a contact point or mute timing the build does not declare, or a policy matcher does not parse
72
+ * [GRAF114](/rules/GRAF114.md) - An alerting uid, name, title or interval Grafana rejects, or one declared twice
73
+ * [GRAF115](/rules/GRAF115.md) - A panel unit Grafana doesn't know, which it shows as a literal suffix
@@ -1,15 +1,16 @@
1
1
  ---
2
2
  type: lint-rule
3
3
  title: GRAF002
4
- description: a datasource secret written as a literal.
4
+ description: a datasource or contact point secret written as a literal.
5
5
  id: GRAF002
6
6
  severity: error
7
7
  category: security
8
8
  lexicon: grafana
9
9
  docs: https://intentius.io/chant/lexicons/grafana/rules/
10
10
  ---
11
- a datasource secret written as a literal.
11
+ a datasource or contact point secret written as a literal.
12
12
 
13
13
  ## Applies to
14
14
 
15
+ - [ContactPoint](/types/ContactPoint.md)
15
16
  - [Datasource](/types/Datasource.md)
@@ -1,15 +1,16 @@
1
1
  ---
2
2
  type: post-synth-check
3
3
  title: GRAF101
4
- description: A panel, query or variable uses a datasource no Datasource in the build declares
4
+ description: A panel, query or variable uses a datasource no Datasource or ExternalDatasource in the build declares
5
5
  id: GRAF101
6
6
  severity: error
7
7
  category: post-synth
8
8
  lexicon: grafana
9
9
  docs: https://intentius.io/chant/lexicons/grafana/rules/
10
10
  ---
11
- A panel, query or variable uses a datasource no Datasource in the build declares
11
+ A panel, query or variable uses a datasource no Datasource or ExternalDatasource in the build declares
12
12
 
13
13
  ## Applies to
14
14
 
15
15
  - [Datasource](/types/Datasource.md)
16
+ - [ExternalDatasource](/types/ExternalDatasource.md)
@@ -13,3 +13,4 @@ A query is sent to a datasource of another plugin type
13
13
  ## Applies to
14
14
 
15
15
  - [Datasource](/types/Datasource.md)
16
+ - [ExternalDatasource](/types/ExternalDatasource.md)
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: GRAF108
4
+ description: A query sent to Prometheus is not valid PromQL
5
+ id: GRAF108
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: grafana
9
+ docs: https://intentius.io/chant/lexicons/grafana/rules/
10
+ ---
11
+ A query sent to Prometheus is not valid PromQL
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: GRAF109
4
+ description: Dashboard provisioning puts a dashboard somewhere other than its declared folder, or loads it twice
5
+ id: GRAF109
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: grafana
9
+ docs: https://intentius.io/chant/lexicons/grafana/rules/
10
+ ---
11
+ Dashboard provisioning puts a dashboard somewhere other than its declared folder, or loads it twice
12
+
13
+ ## Applies to
14
+
15
+ - [Dashboard](/types/Dashboard.md)
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: GRAF111
4
+ description: An alert rule's condition, expression inputs or refIds do not fit together
5
+ id: GRAF111
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: grafana
9
+ docs: https://intentius.io/chant/lexicons/grafana/rules/
10
+ ---
11
+ An alert rule's condition, expression inputs or refIds do not fit together
@@ -0,0 +1,16 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: GRAF112
4
+ description: An alert rule queries a datasource the build does not declare, or of another type
5
+ id: GRAF112
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: grafana
9
+ docs: https://intentius.io/chant/lexicons/grafana/rules/
10
+ ---
11
+ An alert rule queries a datasource the build does not declare, or of another type
12
+
13
+ ## Applies to
14
+
15
+ - [Datasource](/types/Datasource.md)
16
+ - [ExternalDatasource](/types/ExternalDatasource.md)
@@ -0,0 +1,16 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: GRAF113
4
+ description: Alerting routes to a contact point or mute timing the build does not declare, or a policy matcher does not parse
5
+ id: GRAF113
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: grafana
9
+ docs: https://intentius.io/chant/lexicons/grafana/rules/
10
+ ---
11
+ Alerting routes to a contact point or mute timing the build does not declare, or a policy matcher does not parse
12
+
13
+ ## Applies to
14
+
15
+ - [ContactPoint](/types/ContactPoint.md)
16
+ - [MuteTiming](/types/MuteTiming.md)
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: GRAF114
4
+ description: An alerting uid, name, title or interval Grafana rejects, or one declared twice
5
+ id: GRAF114
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: grafana
9
+ docs: https://intentius.io/chant/lexicons/grafana/rules/
10
+ ---
11
+ An alerting uid, name, title or interval Grafana rejects, or one declared twice
@@ -0,0 +1,11 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: GRAF115
4
+ description: A panel unit Grafana doesn't know, which it shows as a literal suffix
5
+ id: GRAF115
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: grafana
9
+ docs: https://intentius.io/chant/lexicons/grafana/rules/
10
+ ---
11
+ A panel unit Grafana doesn't know, which it shows as a literal suffix
@@ -0,0 +1,9 @@
1
+ ---
2
+ type: resource-type
3
+ title: AlertListPanel
4
+ description: grafana resource type Grafana::Panel::alertlist
5
+ name: AlertListPanel
6
+ lexicon: grafana
7
+ resource_type: Grafana::Panel::alertlist
8
+ ---
9
+ `Grafana::Panel::alertlist`, a resource type of the grafana lexicon.
@@ -0,0 +1,9 @@
1
+ ---
2
+ type: resource-type
3
+ title: AlertQuery
4
+ description: grafana resource type Grafana::AlertQuery
5
+ name: AlertQuery
6
+ lexicon: grafana
7
+ resource_type: Grafana::AlertQuery
8
+ ---
9
+ `Grafana::AlertQuery`, a resource type of the grafana lexicon.
@@ -0,0 +1,9 @@
1
+ ---
2
+ type: resource-type
3
+ title: AlertRule
4
+ description: grafana resource type Grafana::AlertRule
5
+ name: AlertRule
6
+ lexicon: grafana
7
+ resource_type: Grafana::AlertRule
8
+ ---
9
+ `Grafana::AlertRule`, a resource type of the grafana lexicon.
@@ -0,0 +1,9 @@
1
+ ---
2
+ type: resource-type
3
+ title: AlertRuleGroup
4
+ description: grafana resource type Grafana::AlertRuleGroup
5
+ name: AlertRuleGroup
6
+ lexicon: grafana
7
+ resource_type: Grafana::AlertRuleGroup
8
+ ---
9
+ `Grafana::AlertRuleGroup`, a resource type of the grafana lexicon.
@@ -0,0 +1,9 @@
1
+ ---
2
+ type: resource-type
3
+ title: BarChartPanel
4
+ description: grafana resource type Grafana::Panel::barchart
5
+ name: BarChartPanel
6
+ lexicon: grafana
7
+ resource_type: Grafana::Panel::barchart
8
+ ---
9
+ `Grafana::Panel::barchart`, a resource type of the grafana lexicon.
@@ -0,0 +1,9 @@
1
+ ---
2
+ type: resource-type
3
+ title: BarGaugePanel
4
+ description: grafana resource type Grafana::Panel::bargauge
5
+ name: BarGaugePanel
6
+ lexicon: grafana
7
+ resource_type: Grafana::Panel::bargauge
8
+ ---
9
+ `Grafana::Panel::bargauge`, a resource type of the grafana lexicon.
@@ -0,0 +1,9 @@
1
+ ---
2
+ type: resource-type
3
+ title: CanvasPanel
4
+ description: grafana resource type Grafana::Panel::canvas
5
+ name: CanvasPanel
6
+ lexicon: grafana
7
+ resource_type: Grafana::Panel::canvas
8
+ ---
9
+ `Grafana::Panel::canvas`, a resource type of the grafana lexicon.