@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,176 @@
1
+ // Code generated by chant generate from the vendored Grafana schema
2
+ // src/spec/schemas/canvas.jsonschema.json (see src/pin.ts) and its correction
3
+ // overlay in src/spec/overlay/ (see src/spec/overlay.ts). DO NOT EDIT.
4
+ /* eslint-disable */
5
+
6
+ export type HorizontalConstraint = "left" | "right" | "leftright" | "center" | "scale";
7
+
8
+ export type VerticalConstraint = "top" | "bottom" | "topbottom" | "center" | "scale";
9
+
10
+ export interface Constraint {
11
+ horizontal?: HorizontalConstraint;
12
+ vertical?: VerticalConstraint;
13
+ }
14
+
15
+ export interface Placement {
16
+ top?: number;
17
+ left?: number;
18
+ right?: number;
19
+ bottom?: number;
20
+ width?: number;
21
+ height?: number;
22
+ rotation?: number;
23
+ }
24
+
25
+ export type BackgroundImageSize = "original" | "contain" | "cover" | "fill" | "tile";
26
+
27
+ export interface BackgroundConfig {
28
+ color?: ColorDimensionConfig;
29
+ image?: ResourceDimensionConfig;
30
+ size?: BackgroundImageSize;
31
+ }
32
+
33
+ export interface LineConfig {
34
+ color?: ColorDimensionConfig;
35
+ width?: number;
36
+ radius?: number;
37
+ }
38
+
39
+ export type HttpRequestMethod = "GET" | "POST" | "PUT";
40
+
41
+ export interface ConnectionCoordinates {
42
+ x: number;
43
+ y: number;
44
+ }
45
+
46
+ export type ConnectionPath = "straight";
47
+
48
+ export interface CanvasConnection {
49
+ source: ConnectionCoordinates;
50
+ target: ConnectionCoordinates;
51
+ targetName?: string;
52
+ path: ConnectionPath;
53
+ color?: ColorDimensionConfig;
54
+ size?: ScaleDimensionConfig;
55
+ vertices?: ConnectionCoordinates[];
56
+ sourceOriginal?: ConnectionCoordinates;
57
+ targetOriginal?: ConnectionCoordinates;
58
+ direction?: DirectionDimensionConfig;
59
+ }
60
+
61
+ export interface CanvasElementOptions {
62
+ name: string;
63
+ type: string;
64
+ /**
65
+ * TODO: figure out how to define this (element config(s))
66
+ */
67
+ config?: Record<string, unknown>;
68
+ constraint?: Constraint;
69
+ placement?: Placement;
70
+ background?: BackgroundConfig;
71
+ border?: LineConfig;
72
+ connections?: CanvasConnection[];
73
+ }
74
+
75
+ export interface Options {
76
+ /**
77
+ * Enable inline editing
78
+ */
79
+ inlineEditing: boolean;
80
+ /**
81
+ * Show all available element types
82
+ */
83
+ showAdvancedTypes: boolean;
84
+ /**
85
+ * Enable pan and zoom
86
+ */
87
+ panZoom: boolean;
88
+ /**
89
+ * Enable infinite pan
90
+ */
91
+ infinitePan: boolean;
92
+ /**
93
+ * The root element of canvas (frame), where all canvas elements are nested
94
+ * TODO: Figure out how to define a default value for this
95
+ */
96
+ root: {
97
+ /**
98
+ * Name of the root element
99
+ */
100
+ name: string;
101
+ /**
102
+ * Type of root element (frame)
103
+ */
104
+ type: "frame";
105
+ /**
106
+ * The list of canvas elements attached to the root element
107
+ */
108
+ elements: CanvasElementOptions[];
109
+ constraint?: Constraint;
110
+ placement?: Placement;
111
+ background?: BackgroundConfig;
112
+ border?: LineConfig;
113
+ };
114
+ /**
115
+ * Controls tooltip options
116
+ */
117
+ tooltip?: CanvasTooltip;
118
+ /**
119
+ * Zoom to content
120
+ */
121
+ zoomToContent?: boolean;
122
+ }
123
+
124
+ export interface ColorDimensionConfig {
125
+ /**
126
+ * color value
127
+ */
128
+ fixed?: string;
129
+ /**
130
+ * fixed: T -- will be added by each element
131
+ */
132
+ field?: string;
133
+ }
134
+
135
+ /**
136
+ * Links to a resource (image/svg path)
137
+ */
138
+ export interface ResourceDimensionConfig {
139
+ mode: ResourceDimensionMode;
140
+ /**
141
+ * fixed: T -- will be added by each element
142
+ */
143
+ field?: string;
144
+ fixed?: string;
145
+ }
146
+
147
+ export interface ScaleDimensionConfig {
148
+ min: number;
149
+ max: number;
150
+ fixed?: number;
151
+ /**
152
+ * fixed: T -- will be added by each element
153
+ */
154
+ field?: string;
155
+ /**
156
+ * | *"linear"
157
+ */
158
+ mode?: ScaleDimensionMode;
159
+ }
160
+
161
+ export type ResourceDimensionMode = "fixed" | "field" | "mapping";
162
+
163
+ export type ScaleDimensionMode = "linear" | "quad";
164
+
165
+ export type TooltipDisplayMode = "single" | "multi" | "none";
166
+
167
+ export interface CanvasTooltip {
168
+ mode: TooltipDisplayMode;
169
+ disableForOneClick?: boolean;
170
+ }
171
+
172
+ export interface DirectionDimensionConfig {
173
+ field?: string;
174
+ mode: "fixed" | "field";
175
+ fixed?: "forward" | "reverse" | "both" | "none";
176
+ }
@@ -1,5 +1,6 @@
1
1
  // Code generated by chant generate from the vendored Grafana schema
2
- // src/spec/schemas/dashboard.jsonschema.json (see src/pin.ts). DO NOT EDIT.
2
+ // src/spec/schemas/dashboard.jsonschema.json (see src/pin.ts) and its correction
3
+ // overlay in src/spec/overlay/ (see src/spec/overlay.ts). DO NOT EDIT.
3
4
  /* eslint-disable */
4
5
 
5
6
  export interface AnnotationActions {
@@ -74,9 +75,9 @@ export interface Dashboard {
74
75
  */
75
76
  revision?: number;
76
77
  /**
77
- * ID of a dashboard imported from the https://grafana.com/grafana/dashboards/ portal
78
+ * ID of a dashboard imported from the https://grafana.com/grafana/dashboards/ portal. A string in Grafana 12.4, an integer in 13.x; grafana.com downloads carry null.
78
79
  */
79
- gnetId?: string;
80
+ gnetId?: string | number | null;
80
81
  /**
81
82
  * Tags associated with dashboard.
82
83
  */
@@ -140,7 +141,7 @@ export interface Dashboard {
140
141
  /**
141
142
  * Configured template variables
142
143
  */
143
- templating: {
144
+ templating?: {
144
145
  /**
145
146
  * List of configured template variables with their saved values along with some other metadata
146
147
  */
@@ -152,7 +153,7 @@ export interface Dashboard {
152
153
  * Grafana comes with a native annotation store and the ability to add annotation events directly from the graph panel or via the HTTP API.
153
154
  * See https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/annotate-visualizations/
154
155
  */
155
- annotations: AnnotationContainer;
156
+ annotations?: AnnotationContainer;
156
157
  /**
157
158
  * Links with references to other dashboards or external websites.
158
159
  */
@@ -165,6 +166,18 @@ export interface Dashboard {
165
166
  * When set to true, the dashboard will load all panels in the dashboard when it's loaded.
166
167
  */
167
168
  preload?: boolean;
169
+ /**
170
+ * Inputs the importer asks for (datasources, constants). Written by "Export for sharing externally".
171
+ */
172
+ __inputs?: ExportInput[];
173
+ /**
174
+ * Plugins and the Grafana version the export needs. Written by "Export for sharing externally".
175
+ */
176
+ __requires?: ExportRequirement[];
177
+ /**
178
+ * Library panels the export embeds, keyed by uid. Written by "Export for sharing externally".
179
+ */
180
+ __elements?: Record<string, LibraryElementExport>;
168
181
  }
169
182
 
170
183
  /**
@@ -213,7 +226,7 @@ export interface Panel {
213
226
  /**
214
227
  * The panel plugin type id. This is used to find the plugin to display the panel.
215
228
  */
216
- type: string;
229
+ type?: string;
217
230
  /**
218
231
  * Unique identifier of the panel. Generated by Grafana when creating a new panel. It must be unique within a dashboard, but not globally.
219
232
  */
@@ -249,7 +262,7 @@ export interface Panel {
249
262
  /**
250
263
  * Panel links.
251
264
  */
252
- links?: DashboardLink[];
265
+ links?: PanelLink[];
253
266
  /**
254
267
  * Name of template variable to repeat for.
255
268
  */
@@ -398,7 +411,7 @@ export interface DashboardLink {
398
411
  /**
399
412
  * If true, all dashboards links will be displayed in a dropdown. If false, all dashboards links will be displayed side by side. Only valid if the type is dashboards
400
413
  */
401
- asDropdown: boolean;
414
+ asDropdown?: boolean;
402
415
  /**
403
416
  * Placement can be used to display the link somewhere else on the dashboard other than above the visualisations.
404
417
  */
@@ -406,15 +419,19 @@ export interface DashboardLink {
406
419
  /**
407
420
  * If true, the link will be opened in a new tab
408
421
  */
409
- targetBlank: boolean;
422
+ targetBlank?: boolean;
410
423
  /**
411
424
  * If true, includes current template variables values in the link as query params
412
425
  */
413
- includeVars: boolean;
426
+ includeVars?: boolean;
414
427
  /**
415
428
  * If true, includes current time range in the link as query params
416
429
  */
417
- keepTime: boolean;
430
+ keepTime?: boolean;
431
+ /**
432
+ * The source that registered the link (if any)
433
+ */
434
+ origin?: ControlSourceRef;
418
435
  }
419
436
 
420
437
  /**
@@ -455,7 +472,7 @@ export interface DataTransformerConfig {
455
472
  * Options to be passed to the transformer
456
473
  * Valid options depend on the transformer id
457
474
  */
458
- options: Record<string, unknown>;
475
+ options: unknown;
459
476
  }
460
477
 
461
478
  /**
@@ -468,9 +485,13 @@ export interface MatcherConfig {
468
485
  */
469
486
  id: string;
470
487
  /**
471
- * The matcher options. This is specific to the matcher implementation.
488
+ * The matcher options. This is specific to the matcher implementation: a field name for byName, a pattern for byRegexp, an object for byNames or byValue.
472
489
  */
473
- options?: Record<string, unknown>;
490
+ options?: unknown;
491
+ /**
492
+ * If set, limits this matcher to fields of that type. If not set, "series" mode is used.
493
+ */
494
+ scope?: MatcherScope;
474
495
  }
475
496
 
476
497
  /**
@@ -587,7 +608,7 @@ export interface FieldConfig {
587
608
  /**
588
609
  * The behavior when clicking on a result
589
610
  */
590
- links?: DashboardLink[];
611
+ links?: DataLink[];
591
612
  /**
592
613
  * Define interactive HTTP requests that can be triggered from data visualizations.
593
614
  */
@@ -750,11 +771,15 @@ export interface Threshold {
750
771
  * Value represents a specified metric for the threshold, which triggers a visual change in the dashboard when this value is met or exceeded.
751
772
  * Nulls currently appear here when serializing -Infinity to JSON.
752
773
  */
753
- value: number | null;
774
+ value?: number | null;
754
775
  /**
755
776
  * Color represents the color of the visual change that will occur in the dashboard when the threshold value is met or exceeded.
756
777
  */
757
778
  color: string;
779
+ /**
780
+ * Optional dashboard-variable expression (e.g. `$myVar`) resolved at render time; `value` is the numeric fallback when the expression cannot be resolved to a single finite number.
781
+ */
782
+ valueExpr?: string;
758
783
  }
759
784
 
760
785
  /**
@@ -795,7 +820,7 @@ export interface FieldColor {
795
820
  * `shades`: Shades of a single color. Specify a single color, useful in an override rule.
796
821
  * `fixed`: Fixed color mode. Specify a single color, useful in an override rule.
797
822
  */
798
- export type FieldColorModeId = "thresholds" | "palette-classic" | "palette-classic-by-name" | "continuous-GrYlRd" | "continuous-RdYlGr" | "continuous-BlYlRd" | "continuous-YlRd" | "continuous-BlPu" | "continuous-YlBl" | "continuous-blues" | "continuous-reds" | "continuous-greens" | "continuous-purples" | "fixed" | "shades";
823
+ export type FieldColorModeId = "thresholds" | "palette-classic" | "palette-classic-by-name" | "continuous-viridis" | "continuous-magma" | "continuous-plasma" | "continuous-inferno" | "continuous-cividis" | "continuous-GrYlRd" | "continuous-RdYlGr" | "continuous-BlYlRd" | "continuous-YlRd" | "continuous-BlPu" | "continuous-YlBl" | "continuous-blues" | "continuous-reds" | "continuous-greens" | "continuous-purples" | "fixed" | "shades";
799
824
 
800
825
  /**
801
826
  * Defines how to assign a series color from "by value" color schemes. For example for an aggregated data points like a timeseries, the color can be assigned by the min, max or last value.
@@ -871,7 +896,7 @@ export type ActionVariableType = "string";
871
896
 
872
897
  export interface DynamicConfigValue {
873
898
  id: string;
874
- value?: Record<string, unknown>;
899
+ value?: unknown;
875
900
  }
876
901
 
877
902
  /**
@@ -941,17 +966,17 @@ export interface VariableModel {
941
966
  */
942
967
  description?: string;
943
968
  /**
944
- * Query used to fetch values for a variable
969
+ * Query used to fetch values for a variable: a string, or the datasource's own query object (Prometheus writes { query, qryType, refId }).
945
970
  */
946
- query?: string | Record<string, Record<string, unknown>>;
971
+ query?: string | Record<string, unknown>;
947
972
  /**
948
973
  * Data source used to fetch values for a variable. It can be defined but `null`.
949
974
  */
950
975
  datasource?: DataSourceRef;
951
976
  /**
952
- * Shows current selected variable text/value on the dashboard
977
+ * Shows current selected variable text/value on the dashboard. `{}` before the variable has been resolved.
953
978
  */
954
- current?: VariableOption;
979
+ current?: VariableOption | Record<string, never>;
955
980
  /**
956
981
  * Whether multiple values can be selected or not from variable value list
957
982
  */
@@ -1007,6 +1032,34 @@ export interface VariableModel {
1007
1032
  */
1008
1033
  auto_count?: number;
1009
1034
  definition?: string;
1035
+ /**
1036
+ * Whether the group-by operator is enabled in the ad hoc filter combobox.
1037
+ */
1038
+ enableGroupBy?: boolean;
1039
+ /**
1040
+ * Whether a custom variable defines its values as CSV or JSON.
1041
+ */
1042
+ valuesFormat?: "csv" | "json";
1043
+ /**
1044
+ * Whether regex applies to the variable value or its display text.
1045
+ */
1046
+ regexApplyTo?: "value" | "text";
1047
+ /**
1048
+ * Ad hoc variable: the filters currently applied.
1049
+ */
1050
+ filters?: AdHocFilter[];
1051
+ /**
1052
+ * Ad hoc variable: filters always applied to the key lookup, not shown in the UI.
1053
+ */
1054
+ baseFilters?: AdHocFilter[];
1055
+ /**
1056
+ * Ad hoc variable: static keys that override the datasource's.
1057
+ */
1058
+ defaultKeys?: Record<string, unknown>[];
1059
+ /**
1060
+ * Group-by variable: the default selection.
1061
+ */
1062
+ defaultValue?: VariableOption;
1010
1063
  }
1011
1064
 
1012
1065
  /**
@@ -1045,6 +1098,10 @@ export interface VariableOption {
1045
1098
  * Value of the option
1046
1099
  */
1047
1100
  value: string | string[];
1101
+ /**
1102
+ * Additional properties for multi-props variables
1103
+ */
1104
+ properties?: Record<string, string>;
1048
1105
  }
1049
1106
 
1050
1107
  /**
@@ -1154,6 +1211,7 @@ export interface AnnotationQuery {
1154
1211
  * Mappings define how to convert data frame fields to annotation event fields.
1155
1212
  */
1156
1213
  mappings?: Record<string, AnnotationEventFieldMapping>;
1214
+ [key: string]: unknown;
1157
1215
  }
1158
1216
 
1159
1217
  export interface AnnotationPanelFilter {
@@ -1285,5 +1343,131 @@ export interface AnnotationEventFieldMapping {
1285
1343
  regex?: string;
1286
1344
  }
1287
1345
 
1346
+ /**
1347
+ * One entry of an export's `__inputs`.
1348
+ */
1349
+ export interface ExportInput {
1350
+ /**
1351
+ * Placeholder name, used as `${name}` in the dashboard.
1352
+ */
1353
+ name: string;
1354
+ label?: string;
1355
+ description?: string;
1356
+ /**
1357
+ * `datasource` or `constant`.
1358
+ */
1359
+ type: string;
1360
+ pluginId?: string;
1361
+ pluginName?: string;
1362
+ /**
1363
+ * The value a constant input carries.
1364
+ */
1365
+ value?: unknown;
1366
+ [key: string]: unknown;
1367
+ }
1368
+
1369
+ /**
1370
+ * One entry of an export's `__requires`.
1371
+ */
1372
+ export interface ExportRequirement {
1373
+ /**
1374
+ * `grafana`, `panel` or `datasource`.
1375
+ */
1376
+ type: string;
1377
+ id: string;
1378
+ name?: string;
1379
+ version?: string;
1380
+ [key: string]: unknown;
1381
+ }
1382
+
1383
+ /**
1384
+ * One library panel embedded in an export's `__elements`.
1385
+ */
1386
+ export interface LibraryElementExport {
1387
+ uid: string;
1388
+ name: string;
1389
+ kind?: number;
1390
+ /**
1391
+ * The library panel's own panel JSON. GRAF107 checks it as a panel (src/schema-validate.ts), not here.
1392
+ */
1393
+ model: Record<string, unknown>;
1394
+ [key: string]: unknown;
1395
+ }
1396
+
1397
+ /**
1398
+ * A panel link: the fields Grafana's panel link editor writes, plus DashboardLink's.
1399
+ */
1400
+ export interface PanelLink {
1401
+ /**
1402
+ * Title to display with the link
1403
+ */
1404
+ title: string;
1405
+ /**
1406
+ * Link URL. Supports variables, e.g. ${__url_time_range}.
1407
+ */
1408
+ url?: string;
1409
+ /**
1410
+ * If true, the link will be opened in a new tab
1411
+ */
1412
+ targetBlank?: boolean;
1413
+ type?: DashboardLinkType;
1414
+ icon?: string;
1415
+ tooltip?: string;
1416
+ tags?: string[];
1417
+ asDropdown?: boolean;
1418
+ includeVars?: boolean;
1419
+ keepTime?: boolean;
1420
+ placement?: DashboardLinkPlacement;
1421
+ oneClick?: boolean;
1422
+ }
1423
+
1424
+ /**
1425
+ * A data link on a field. Open: the CUE leaves these items unconstrained.
1426
+ */
1427
+ export interface DataLink {
1428
+ title?: string;
1429
+ /**
1430
+ * Link URL. Supports data variables, e.g. ${__field.labels.pod}.
1431
+ */
1432
+ url?: string;
1433
+ targetBlank?: boolean;
1434
+ oneClick?: boolean;
1435
+ /**
1436
+ * A query in another datasource (Explore link).
1437
+ */
1438
+ internal?: Record<string, unknown>;
1439
+ origin?: unknown;
1440
+ [key: string]: unknown;
1441
+ }
1442
+
1443
+ export interface ControlSourceRef {
1444
+ type: "datasource";
1445
+ /**
1446
+ * The plugin type-id
1447
+ */
1448
+ group: string;
1449
+ }
1450
+
1451
+ export type MatcherScope = "series" | "nested" | "annotation" | "exemplar";
1452
+
1453
+ /**
1454
+ * One ad hoc filter.
1455
+ */
1456
+ export interface AdHocFilter {
1457
+ key: string;
1458
+ /**
1459
+ * =, !=, =~, !~, <, >, =| or !=|
1460
+ */
1461
+ operator: string;
1462
+ value?: string;
1463
+ values?: string[];
1464
+ origin?: string;
1465
+ /**
1466
+ * @deprecated
1467
+ */
1468
+ condition?: string;
1469
+ [key: string]: unknown;
1470
+ }
1471
+
1288
1472
  /** The dashboard `schemaVersion` the pinned schema defaults to, and the one chant emits. */
1289
1473
  export const DASHBOARD_SCHEMA_VERSION = 42;