@intentius/chant-lexicon-grafana 0.96.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 (259) hide show
  1. package/README.md +50 -0
  2. package/dist/build.d.ts +116 -0
  3. package/dist/build.d.ts.map +1 -0
  4. package/dist/catalog.d.ts +26 -0
  5. package/dist/catalog.d.ts.map +1 -0
  6. package/dist/codegen/docs-cli.d.ts +3 -0
  7. package/dist/codegen/docs-cli.d.ts.map +1 -0
  8. package/dist/codegen/docs.d.ts +8 -0
  9. package/dist/codegen/docs.d.ts.map +1 -0
  10. package/dist/codegen/generate-cli.d.ts +3 -0
  11. package/dist/codegen/generate-cli.d.ts.map +1 -0
  12. package/dist/codegen/generate.d.ts +21 -0
  13. package/dist/codegen/generate.d.ts.map +1 -0
  14. package/dist/codegen/package.d.ts +7 -0
  15. package/dist/codegen/package.d.ts.map +1 -0
  16. package/dist/codegen/schema-types.d.ts +41 -0
  17. package/dist/codegen/schema-types.d.ts.map +1 -0
  18. package/dist/composites/agent-dashboard.d.ts +70 -0
  19. package/dist/composites/agent-dashboard.d.ts.map +1 -0
  20. package/dist/composites/catalog.d.ts +3 -0
  21. package/dist/composites/catalog.d.ts.map +1 -0
  22. package/dist/composites/index.d.ts +12 -0
  23. package/dist/composites/index.d.ts.map +1 -0
  24. package/dist/composites/red-dashboard.d.ts +58 -0
  25. package/dist/composites/red-dashboard.d.ts.map +1 -0
  26. package/dist/composites/shared.d.ts +68 -0
  27. package/dist/composites/shared.d.ts.map +1 -0
  28. package/dist/composites/slo-dashboard.d.ts +62 -0
  29. package/dist/composites/slo-dashboard.d.ts.map +1 -0
  30. package/dist/dashboard.d.ts +84 -0
  31. package/dist/dashboard.d.ts.map +1 -0
  32. package/dist/datasource.d.ts +67 -0
  33. package/dist/datasource.d.ts.map +1 -0
  34. package/dist/detect.d.ts +20 -0
  35. package/dist/detect.d.ts.map +1 -0
  36. package/dist/index.d.ts +17 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/integrity.json +22 -0
  39. package/dist/lint/audit-catalog.d.ts +13 -0
  40. package/dist/lint/audit-catalog.d.ts.map +1 -0
  41. package/dist/lint/post-synth/graf101.d.ts +8 -0
  42. package/dist/lint/post-synth/graf101.d.ts.map +1 -0
  43. package/dist/lint/post-synth/graf102.d.ts +8 -0
  44. package/dist/lint/post-synth/graf102.d.ts.map +1 -0
  45. package/dist/lint/post-synth/graf103.d.ts +8 -0
  46. package/dist/lint/post-synth/graf103.d.ts.map +1 -0
  47. package/dist/lint/post-synth/graf104.d.ts +8 -0
  48. package/dist/lint/post-synth/graf104.d.ts.map +1 -0
  49. package/dist/lint/post-synth/graf105.d.ts +8 -0
  50. package/dist/lint/post-synth/graf105.d.ts.map +1 -0
  51. package/dist/lint/post-synth/graf106.d.ts +8 -0
  52. package/dist/lint/post-synth/graf106.d.ts.map +1 -0
  53. package/dist/lint/post-synth/graf107.d.ts +8 -0
  54. package/dist/lint/post-synth/graf107.d.ts.map +1 -0
  55. package/dist/lint/post-synth/grafana-helpers.d.ts +16 -0
  56. package/dist/lint/post-synth/grafana-helpers.d.ts.map +1 -0
  57. package/dist/lint/post-synth/index.d.ts +3 -0
  58. package/dist/lint/post-synth/index.d.ts.map +1 -0
  59. package/dist/lint/rules/grafana-ast.d.ts +21 -0
  60. package/dist/lint/rules/grafana-ast.d.ts.map +1 -0
  61. package/dist/lint/rules/index.d.ts +6 -0
  62. package/dist/lint/rules/index.d.ts.map +1 -0
  63. package/dist/lint/rules/literal-secret.d.ts +12 -0
  64. package/dist/lint/rules/literal-secret.d.ts.map +1 -0
  65. package/dist/lint/rules/uid-syntax.d.ts +12 -0
  66. package/dist/lint/rules/uid-syntax.d.ts.map +1 -0
  67. package/dist/lsp/completions.d.ts +4 -0
  68. package/dist/lsp/completions.d.ts.map +1 -0
  69. package/dist/lsp/hover.d.ts +4 -0
  70. package/dist/lsp/hover.d.ts.map +1 -0
  71. package/dist/manifest.json +8 -0
  72. package/dist/meta.json +107 -0
  73. package/dist/okf/index.md +39 -0
  74. package/dist/okf/rules/GRAF001.md +16 -0
  75. package/dist/okf/rules/GRAF002.md +15 -0
  76. package/dist/okf/rules/GRAF101.md +15 -0
  77. package/dist/okf/rules/GRAF102.md +15 -0
  78. package/dist/okf/rules/GRAF103.md +11 -0
  79. package/dist/okf/rules/GRAF104.md +15 -0
  80. package/dist/okf/rules/GRAF105.md +11 -0
  81. package/dist/okf/rules/GRAF106.md +11 -0
  82. package/dist/okf/rules/GRAF107.md +11 -0
  83. package/dist/okf/types/ConstantVariable.md +9 -0
  84. package/dist/okf/types/CustomVariable.md +9 -0
  85. package/dist/okf/types/Dashboard.md +14 -0
  86. package/dist/okf/types/DashboardProvider.md +9 -0
  87. package/dist/okf/types/Datasource.md +16 -0
  88. package/dist/okf/types/DatasourceVariable.md +9 -0
  89. package/dist/okf/types/GaugePanel.md +9 -0
  90. package/dist/okf/types/HeatmapPanel.md +9 -0
  91. package/dist/okf/types/IntervalVariable.md +9 -0
  92. package/dist/okf/types/LogsPanel.md +9 -0
  93. package/dist/okf/types/LokiQuery.md +9 -0
  94. package/dist/okf/types/PromQuery.md +9 -0
  95. package/dist/okf/types/QueryVariable.md +9 -0
  96. package/dist/okf/types/Row.md +9 -0
  97. package/dist/okf/types/StatPanel.md +9 -0
  98. package/dist/okf/types/TablePanel.md +9 -0
  99. package/dist/okf/types/TempoQuery.md +9 -0
  100. package/dist/okf/types/TextPanel.md +9 -0
  101. package/dist/okf/types/TextboxVariable.md +9 -0
  102. package/dist/okf/types/TimeSeriesPanel.md +9 -0
  103. package/dist/okf/types/TracesPanel.md +9 -0
  104. package/dist/package-cli.d.ts +3 -0
  105. package/dist/package-cli.d.ts.map +1 -0
  106. package/dist/panels.d.ts +138 -0
  107. package/dist/panels.d.ts.map +1 -0
  108. package/dist/pin.d.ts +32 -0
  109. package/dist/pin.d.ts.map +1 -0
  110. package/dist/plugin.d.ts +12 -0
  111. package/dist/plugin.d.ts.map +1 -0
  112. package/dist/query.d.ts +81 -0
  113. package/dist/query.d.ts.map +1 -0
  114. package/dist/rules/graf101.ts +17 -0
  115. package/dist/rules/graf102.ts +17 -0
  116. package/dist/rules/graf103.ts +17 -0
  117. package/dist/rules/graf104.ts +17 -0
  118. package/dist/rules/graf105.ts +17 -0
  119. package/dist/rules/graf106.ts +17 -0
  120. package/dist/rules/graf107.ts +17 -0
  121. package/dist/rules/grafana-ast.ts +70 -0
  122. package/dist/rules/grafana-helpers.ts +68 -0
  123. package/dist/rules/literal-secret.ts +48 -0
  124. package/dist/rules/uid-syntax.ts +56 -0
  125. package/dist/schema/dashboard.gen.d.ts +1231 -0
  126. package/dist/schema/dashboard.gen.d.ts.map +1 -0
  127. package/dist/schema/gauge.gen.d.ts +57 -0
  128. package/dist/schema/gauge.gen.d.ts.map +1 -0
  129. package/dist/schema/heatmap.gen.d.ts +295 -0
  130. package/dist/schema/heatmap.gen.d.ts.map +1 -0
  131. package/dist/schema/index.d.ts +18 -0
  132. package/dist/schema/index.d.ts.map +1 -0
  133. package/dist/schema/logs.gen.d.ts +29 -0
  134. package/dist/schema/logs.gen.d.ts.map +1 -0
  135. package/dist/schema/loki.gen.d.ts +69 -0
  136. package/dist/schema/loki.gen.d.ts.map +1 -0
  137. package/dist/schema/prometheus.gen.d.ts +169 -0
  138. package/dist/schema/prometheus.gen.d.ts.map +1 -0
  139. package/dist/schema/stat.gen.d.ts +75 -0
  140. package/dist/schema/stat.gen.d.ts.map +1 -0
  141. package/dist/schema/table.gen.d.ts +295 -0
  142. package/dist/schema/table.gen.d.ts.map +1 -0
  143. package/dist/schema/tempo.gen.d.ts +136 -0
  144. package/dist/schema/tempo.gen.d.ts.map +1 -0
  145. package/dist/schema/text.gen.d.ts +16 -0
  146. package/dist/schema/text.gen.d.ts.map +1 -0
  147. package/dist/schema/timeseries.gen.d.ts +179 -0
  148. package/dist/schema/timeseries.gen.d.ts.map +1 -0
  149. package/dist/schema-validate.d.ts +20 -0
  150. package/dist/schema-validate.d.ts.map +1 -0
  151. package/dist/serializer.d.ts +22 -0
  152. package/dist/serializer.d.ts.map +1 -0
  153. package/dist/skill-defs.d.ts +3 -0
  154. package/dist/skill-defs.d.ts.map +1 -0
  155. package/dist/skills/chant-grafana-provisioning.md +42 -0
  156. package/dist/skills/chant-grafana.md +93 -0
  157. package/dist/spec/fetch-cli.d.ts +3 -0
  158. package/dist/spec/fetch-cli.d.ts.map +1 -0
  159. package/dist/spec/schemas.d.ts +25 -0
  160. package/dist/spec/schemas.d.ts.map +1 -0
  161. package/dist/types/index.d.ts +3 -0
  162. package/dist/util.d.ts +17 -0
  163. package/dist/util.d.ts.map +1 -0
  164. package/dist/validate-cli.d.ts +3 -0
  165. package/dist/validate-cli.d.ts.map +1 -0
  166. package/dist/validate-output.d.ts +42 -0
  167. package/dist/validate-output.d.ts.map +1 -0
  168. package/dist/validate.d.ts +12 -0
  169. package/dist/validate.d.ts.map +1 -0
  170. package/dist/variables.d.ts +100 -0
  171. package/dist/variables.d.ts.map +1 -0
  172. package/package.json +79 -0
  173. package/src/build.test.ts +210 -0
  174. package/src/build.ts +573 -0
  175. package/src/catalog.ts +116 -0
  176. package/src/codegen/docs-cli.ts +4 -0
  177. package/src/codegen/docs.ts +97 -0
  178. package/src/codegen/generate-cli.ts +8 -0
  179. package/src/codegen/generate.ts +83 -0
  180. package/src/codegen/package.ts +41 -0
  181. package/src/codegen/schema-types.ts +173 -0
  182. package/src/composites/agent-dashboard.ts +235 -0
  183. package/src/composites/catalog.test.ts +37 -0
  184. package/src/composites/catalog.ts +223 -0
  185. package/src/composites/composites.test.ts +314 -0
  186. package/src/composites/index.ts +12 -0
  187. package/src/composites/red-dashboard.ts +159 -0
  188. package/src/composites/shared.ts +94 -0
  189. package/src/composites/slo-dashboard.ts +177 -0
  190. package/src/dashboard.ts +123 -0
  191. package/src/datasource.ts +93 -0
  192. package/src/detect.ts +30 -0
  193. package/src/generated/lexicon-grafana.json +107 -0
  194. package/src/import.e2e.test.ts +147 -0
  195. package/src/import.test.ts +45 -0
  196. package/src/index.ts +178 -0
  197. package/src/lint/audit-catalog.ts +87 -0
  198. package/src/lint/post-synth/graf101.ts +17 -0
  199. package/src/lint/post-synth/graf102.ts +17 -0
  200. package/src/lint/post-synth/graf103.ts +17 -0
  201. package/src/lint/post-synth/graf104.ts +17 -0
  202. package/src/lint/post-synth/graf105.ts +17 -0
  203. package/src/lint/post-synth/graf106.ts +17 -0
  204. package/src/lint/post-synth/graf107.ts +17 -0
  205. package/src/lint/post-synth/grafana-helpers.ts +68 -0
  206. package/src/lint/post-synth/index.ts +19 -0
  207. package/src/lint/post-synth/post-synth.test.ts +231 -0
  208. package/src/lint/rules/grafana-ast.ts +70 -0
  209. package/src/lint/rules/index.ts +9 -0
  210. package/src/lint/rules/literal-secret.ts +48 -0
  211. package/src/lint/rules/rules.test.ts +70 -0
  212. package/src/lint/rules/uid-syntax.ts +56 -0
  213. package/src/lsp/completions.test.ts +31 -0
  214. package/src/lsp/completions.ts +15 -0
  215. package/src/lsp/hover.test.ts +25 -0
  216. package/src/lsp/hover.ts +28 -0
  217. package/src/package-cli.ts +17 -0
  218. package/src/panels.ts +275 -0
  219. package/src/pin.ts +68 -0
  220. package/src/plugin.test.ts +50 -0
  221. package/src/plugin.ts +116 -0
  222. package/src/query.ts +160 -0
  223. package/src/schema/dashboard.gen.ts +1289 -0
  224. package/src/schema/gauge.gen.ts +64 -0
  225. package/src/schema/heatmap.gen.ts +321 -0
  226. package/src/schema/index.ts +17 -0
  227. package/src/schema/logs.gen.ts +34 -0
  228. package/src/schema/loki.gen.ts +77 -0
  229. package/src/schema/prometheus.gen.ts +181 -0
  230. package/src/schema/stat.gen.ts +86 -0
  231. package/src/schema/table.gen.ts +334 -0
  232. package/src/schema/tempo.gen.ts +146 -0
  233. package/src/schema/text.gen.ts +22 -0
  234. package/src/schema/timeseries.gen.ts +208 -0
  235. package/src/schema-validate.ts +143 -0
  236. package/src/schema.test.ts +76 -0
  237. package/src/serializer.test.ts +170 -0
  238. package/src/serializer.ts +37 -0
  239. package/src/skill-defs.ts +31 -0
  240. package/src/skills/chant-grafana-provisioning.md +42 -0
  241. package/src/skills/chant-grafana.md +93 -0
  242. package/src/spec/fetch-cli.ts +27 -0
  243. package/src/spec/schemas/dashboard.jsonschema.json +1901 -0
  244. package/src/spec/schemas/gauge.jsonschema.json +114 -0
  245. package/src/spec/schemas/heatmap.jsonschema.json +480 -0
  246. package/src/spec/schemas/logs.jsonschema.json +94 -0
  247. package/src/spec/schemas/loki.jsonschema.json +118 -0
  248. package/src/spec/schemas/prometheus.jsonschema.json +276 -0
  249. package/src/spec/schemas/stat.jsonschema.json +163 -0
  250. package/src/spec/schemas/table.jsonschema.json +751 -0
  251. package/src/spec/schemas/tempo.jsonschema.json +225 -0
  252. package/src/spec/schemas/text.jsonschema.json +72 -0
  253. package/src/spec/schemas/timeseries.jsonschema.json +471 -0
  254. package/src/spec/schemas.ts +56 -0
  255. package/src/util.ts +43 -0
  256. package/src/validate-cli.ts +7 -0
  257. package/src/validate-output.ts +380 -0
  258. package/src/validate.ts +108 -0
  259. package/src/variables.ts +161 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tempo.gen.d.ts","sourceRoot":"","sources":["../../src/schema/tempo.gen.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACpC;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,iBAAiB,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AAEvH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAEzD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;AAE1H;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,16 @@
1
+ export type TextMode = "html" | "markdown" | "code";
2
+ export type CodeLanguage = "json" | "yaml" | "xml" | "typescript" | "sql" | "go" | "markdown" | "html" | "plaintext";
3
+ export interface CodeOptions {
4
+ /**
5
+ * The language passed to monaco code editor
6
+ */
7
+ language: CodeLanguage;
8
+ showLineNumbers: boolean;
9
+ showMiniMap: boolean;
10
+ }
11
+ export interface Options {
12
+ mode: TextMode;
13
+ code?: CodeOptions;
14
+ content: string;
15
+ }
16
+ //# sourceMappingURL=text.gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.gen.d.ts","sourceRoot":"","sources":["../../src/schema/text.gen.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,GAAG,KAAK,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,CAAC;AAErH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,179 @@
1
+ export interface Options {
2
+ timezone?: TimeZone[];
3
+ legend: VizLegendOptions;
4
+ tooltip: VizTooltipOptions;
5
+ orientation?: VizOrientation;
6
+ }
7
+ export type FieldConfig = GraphFieldConfig;
8
+ /**
9
+ * A specific timezone from https://en.wikipedia.org/wiki/Tz_database
10
+ */
11
+ export type TimeZone = string;
12
+ /**
13
+ * TODO docs
14
+ */
15
+ export interface VizLegendOptions {
16
+ displayMode: LegendDisplayMode;
17
+ placement: LegendPlacement;
18
+ showLegend: boolean;
19
+ asTable?: boolean;
20
+ isVisible?: boolean;
21
+ sortBy?: string;
22
+ sortDesc?: boolean;
23
+ width?: number;
24
+ calcs: string[];
25
+ }
26
+ /**
27
+ * TODO docs
28
+ */
29
+ export interface VizTooltipOptions {
30
+ mode: TooltipDisplayMode;
31
+ sort: SortOrder;
32
+ maxWidth?: number;
33
+ maxHeight?: number;
34
+ hideZeros?: boolean;
35
+ }
36
+ /**
37
+ * TODO docs
38
+ */
39
+ export type VizOrientation = "auto" | "vertical" | "horizontal";
40
+ /**
41
+ * TODO docs
42
+ */
43
+ export interface GraphFieldConfig {
44
+ drawStyle?: GraphDrawStyle;
45
+ gradientMode?: GraphGradientMode;
46
+ thresholdsStyle?: GraphThresholdsStyleConfig;
47
+ transform?: GraphTransform;
48
+ lineColor?: string;
49
+ lineWidth?: number;
50
+ lineInterpolation?: LineInterpolation;
51
+ lineStyle?: LineStyle;
52
+ fillColor?: string;
53
+ fillOpacity?: number;
54
+ showPoints?: VisibilityMode;
55
+ pointSize?: number;
56
+ pointColor?: string;
57
+ axisPlacement?: AxisPlacement;
58
+ axisColorMode?: AxisColorMode;
59
+ axisLabel?: string;
60
+ axisWidth?: number;
61
+ axisSoftMin?: number;
62
+ axisSoftMax?: number;
63
+ axisGridShow?: boolean;
64
+ scaleDistribution?: ScaleDistributionConfig;
65
+ axisCenteredZero?: boolean;
66
+ barAlignment?: BarAlignment;
67
+ barWidthFactor?: number;
68
+ stacking?: StackingConfig;
69
+ hideFrom?: HideSeriesConfig;
70
+ insertNulls?: boolean | number;
71
+ /**
72
+ * Indicate if null values should be treated as gaps or connected.
73
+ * When the value is a number, it represents the maximum delta in the
74
+ * X axis that should be considered connected. For timeseries, this is milliseconds
75
+ */
76
+ spanNulls?: boolean | number;
77
+ fillBelowTo?: string;
78
+ pointSymbol?: string;
79
+ axisBorderShow?: boolean;
80
+ barMaxWidth?: number;
81
+ }
82
+ /**
83
+ * TODO docs
84
+ * Note: "hidden" needs to remain as an option for plugins compatibility
85
+ */
86
+ export type LegendDisplayMode = "list" | "table" | "hidden";
87
+ /**
88
+ * TODO docs
89
+ */
90
+ export type LegendPlacement = "bottom" | "right";
91
+ /**
92
+ * TODO docs
93
+ */
94
+ export type TooltipDisplayMode = "single" | "multi" | "none";
95
+ /**
96
+ * TODO docs
97
+ */
98
+ export type SortOrder = "asc" | "desc" | "none";
99
+ /**
100
+ * TODO docs
101
+ */
102
+ export type GraphDrawStyle = "line" | "bars" | "points";
103
+ /**
104
+ * TODO docs
105
+ */
106
+ export type GraphGradientMode = "none" | "opacity" | "hue" | "scheme";
107
+ /**
108
+ * TODO docs
109
+ */
110
+ export interface GraphThresholdsStyleConfig {
111
+ mode: GraphThresholdsStyleMode;
112
+ }
113
+ /**
114
+ * TODO docs
115
+ */
116
+ export type GraphTransform = "constant" | "negative-Y";
117
+ /**
118
+ * TODO docs
119
+ */
120
+ export type LineInterpolation = "linear" | "smooth" | "stepBefore" | "stepAfter";
121
+ /**
122
+ * TODO docs
123
+ */
124
+ export interface LineStyle {
125
+ fill?: "solid" | "dash" | "dot" | "square";
126
+ dash?: number[];
127
+ }
128
+ /**
129
+ * TODO docs
130
+ */
131
+ export type VisibilityMode = "auto" | "never" | "always";
132
+ /**
133
+ * TODO docs
134
+ */
135
+ export type AxisPlacement = "auto" | "top" | "right" | "bottom" | "left" | "hidden";
136
+ /**
137
+ * TODO docs
138
+ */
139
+ export type AxisColorMode = "text" | "series";
140
+ /**
141
+ * TODO docs
142
+ */
143
+ export interface ScaleDistributionConfig {
144
+ type: ScaleDistribution;
145
+ log?: number;
146
+ linearThreshold?: number;
147
+ }
148
+ /**
149
+ * TODO docs
150
+ */
151
+ export type BarAlignment = -1 | 0 | 1;
152
+ /**
153
+ * TODO docs
154
+ */
155
+ export interface StackingConfig {
156
+ mode?: StackingMode;
157
+ group?: string;
158
+ }
159
+ /**
160
+ * TODO docs
161
+ */
162
+ export interface HideSeriesConfig {
163
+ tooltip: boolean;
164
+ legend: boolean;
165
+ viz: boolean;
166
+ }
167
+ /**
168
+ * TODO docs
169
+ */
170
+ export type GraphThresholdsStyleMode = "off" | "line" | "dashed" | "area" | "line+area" | "dashed+area" | "series";
171
+ /**
172
+ * TODO docs
173
+ */
174
+ export type ScaleDistribution = "linear" | "log" | "ordinal" | "symlog";
175
+ /**
176
+ * TODO docs
177
+ */
178
+ export type StackingMode = "none" | "normal" | "percent";
179
+ //# sourceMappingURL=timeseries.gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeseries.gen.d.ts","sourceRoot":"","sources":["../../src/schema/timeseries.gen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Validate built Grafana JSON against the vendored schemas at
3
+ * `GRAFANA_SCHEMA_PIN`, offline.
4
+ *
5
+ * The dashboard is checked against the dashboard schema as it stands. Panel
6
+ * options, `fieldConfig.defaults.custom` and each query are checked against
7
+ * their plugin's schema with every `required` list removed, because Grafana
8
+ * fills in options a panel leaves out: what still fails is a key the schema
9
+ * doesn't have or a value it doesn't allow.
10
+ */
11
+ export interface SchemaProblem {
12
+ /** JSON pointer into the dashboard. */
13
+ path: string;
14
+ message: string;
15
+ }
16
+ type Json = Record<string, unknown>;
17
+ /** Everything in one dashboard that the pinned schemas reject. */
18
+ export declare function validateDashboardSchema(dashboard: Json): SchemaProblem[];
19
+ export {};
20
+ //# sourceMappingURL=schema-validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-validate.d.ts","sourceRoot":"","sources":["../src/schema-validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAiED,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAcpC,kEAAkE;AAClE,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,IAAI,GAAG,aAAa,EAAE,CAyCxE"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Grafana serializer.
3
+ *
4
+ * Emits Grafana's own files, as `SerializerResult.files` keyed by path
5
+ * relative to the output directory:
6
+ *
7
+ * - `dashboards/[<folder>/]<uid>.json`: one per dashboard, the JSON Grafana
8
+ * imports as it is (UI import, the HTTP API, or file provisioning).
9
+ * - `provisioning/datasources/chant.yaml`: every declared datasource.
10
+ * - `provisioning/dashboards/chant.yaml`: the provider that loads the
11
+ * dashboard files, a default one unless a `DashboardProvider` is declared.
12
+ *
13
+ * Mount `provisioning/` at `/etc/grafana/provisioning` and `dashboards/` at
14
+ * the provider's path (`/var/lib/grafana/dashboards` by default).
15
+ *
16
+ * The primary output is a small JSON index of what was built. Grafana's
17
+ * files have no metadata channel chant could use without changing what
18
+ * Grafana imports, so no ownership marker is stamped.
19
+ */
20
+ import type { Serializer } from "@intentius/chant/serializer";
21
+ export declare const grafanaSerializer: Serializer;
22
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,6BAA6B,CAAC;AAIhF,eAAO,MAAM,iBAAiB,EAAE,UAW/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** The grafana lexicon's AI skills, read from src/skills/. */
2
+ export declare const grafanaSkills: () => import("packages/core/src").SkillDefinition[];
3
+ //# sourceMappingURL=skill-defs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-defs.d.ts","sourceRoot":"","sources":["../src/skill-defs.ts"],"names":[],"mappings":"AAEA,8DAA8D;AAC9D,eAAO,MAAM,aAAa,qDA2BxB,CAAC"}
@@ -0,0 +1,42 @@
1
+ ---
2
+ skill: chant-grafana-provisioning
3
+ description: Load chant-built Grafana dashboards and datasources into a running Grafana through its provisioning directories, in Docker or Kubernetes
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Provisioning chant-built dashboards into Grafana
8
+
9
+ `chant build src --lexicon grafana -o dist/grafana/index.json` writes, next to the index:
10
+
11
+ | Path | What Grafana does with it |
12
+ |---|---|
13
+ | `provisioning/datasources/chant.yaml` | creates or updates every declared `Datasource` |
14
+ | `provisioning/dashboards/chant.yaml` | a file provider pointing at the dashboards directory |
15
+ | `dashboards/<uid>.json`, `dashboards/<folder>/<uid>.json` | one dashboard each; the subdirectory becomes the folder |
16
+
17
+ ## Docker
18
+
19
+ ```bash
20
+ docker run -p 3000:3000 \
21
+ -v "$PWD/dist/grafana/provisioning:/etc/grafana/provisioning:ro" \
22
+ -v "$PWD/dist/grafana/dashboards:/var/lib/grafana/dashboards:ro" \
23
+ grafana/grafana:12.4.11
24
+ ```
25
+
26
+ ## Kubernetes
27
+
28
+ Put the two provisioning files in one ConfigMap mounted at `/etc/grafana/provisioning/datasources` and `/etc/grafana/provisioning/dashboards` (a `subPath` each, or two ConfigMaps), and the dashboard JSON in another mounted at `/var/lib/grafana/dashboards`. `grafanaFiles(entities)` returns every file by path, so a k8s composite can build those ConfigMaps from the same declarations without a second build.
29
+
30
+ ## Changing where dashboards live
31
+
32
+ Declare a `DashboardProvider` to change the mount path, pin a folder, or allow UI edits:
33
+
34
+ ```ts
35
+ export const provider = new DashboardProvider({ name: "team", path: "/dashboards", allowUiUpdates: true });
36
+ ```
37
+
38
+ With no provider declared, chant writes one named `chant` that reads `/var/lib/grafana/dashboards` and maps subdirectories to folders.
39
+
40
+ ## Checking before Grafana does
41
+
42
+ `chant lint` and `chant build` run GRAF101-GRAF107 on the output, including a check against Grafana's dashboard schema at the pinned version. To check against a real Grafana, the lexicon's `import.test.ts` boots `grafana/grafana` with Docker, provisions the example and reads each dashboard back over the HTTP API.
@@ -0,0 +1,93 @@
1
+ ---
2
+ skill: chant-grafana
3
+ description: Declare Grafana dashboards, panels, typed Prometheus/Tempo/Loki queries and datasources as chant entities, and build dashboard JSON Grafana imports as it is
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Grafana dashboards with chant
8
+
9
+ The grafana lexicon (`@intentius/chant-lexicon-grafana`) types what a dashboard shows: datasources, dashboards, rows, panels, queries and variables. Grafana server settings, users and plugins are out of scope. `chant build` writes one JSON file per dashboard plus Grafana's provisioning files.
10
+
11
+ ## Project setup
12
+
13
+ ```ts
14
+ // chant.config.ts
15
+ export default { lexicons: ["grafana"] };
16
+ ```
17
+
18
+ ## Datasources, declared once
19
+
20
+ ```ts
21
+ import { Datasource } from "@intentius/chant-lexicon-grafana";
22
+
23
+ const prometheus = new Datasource({ name: "Prometheus", type: "prometheus", url: "http://prometheus:9090", isDefault: true });
24
+ const tempo = new Datasource({ name: "Tempo", type: "tempo", url: "http://tempo:3200" });
25
+
26
+ export { prometheus, tempo };
27
+ ```
28
+
29
+ The uid defaults to the name as a uid (`prometheus`, `tempo`). Secrets go in `secureJsonData` as `"$__env{NAME}"` or `"$__file{/path}"`, never literally (GRAF002). A declared `Datasource` inside `jsonData` is written as its uid, which is how a Tempo datasource links to Loki or Prometheus.
30
+
31
+ ## Queries
32
+
33
+ `PromQuery` (PromQL in `expr`), `TempoQuery` (TraceQL in `query`) and `LokiQuery` (LogQL in `expr`). Fields are typed from Grafana's own query schemas. `datasource` only accepts a datasource of the query's plugin type, so a PromQL query can't be pointed at Tempo.
34
+
35
+ ```ts
36
+ const requestRate = new PromQuery({
37
+ expr: 'sum by (service) (rate(http_server_request_duration_seconds_count{service="$service"}[$__rate_interval]))',
38
+ legendFormat: "{{service}}",
39
+ });
40
+ ```
41
+
42
+ ## Panels and dashboards
43
+
44
+ Panel classes: `TimeSeriesPanel`, `StatPanel`, `GaugePanel`, `TablePanel`, `LogsPanel`, `TracesPanel`, `HeatmapPanel`, `TextPanel`, plus `Row`. `options` and `fieldConfig.defaults.custom` are typed from each panel's schema, and every option is optional because Grafana fills in the rest.
45
+
46
+ ```ts
47
+ const rate = new TimeSeriesPanel({ title: "Request rate", datasource: prometheus, targets: [requestRate] });
48
+ const traces = new TablePanel({ title: "Slow traces", datasource: tempo, targets: [slowTraces] });
49
+ const service = new QueryVariable({ name: "service", datasource: prometheus, query: "label_values(up, service)" });
50
+
51
+ export const overview = new Dashboard({
52
+ title: "Service overview",
53
+ variables: [service],
54
+ panels: [rate, traces],
55
+ });
56
+ ```
57
+
58
+ Leave `gridPos` out and panels are placed left to right, wrapping at 24 columns; give `x` and `y` to place one exactly. `Row({ title, panels, collapsed })` starts a full-width row. Dashboard uids default to the export name as a uid (`overview`).
59
+
60
+ chant's lint wants flat declarations: extract nested objects (`time`, `options`) to named consts, keep at most eight declarations per file, and export entities with `export { a, b }`.
61
+
62
+ ## Dashboards built from other declarations
63
+
64
+ Three composites build a whole dashboard from what another lexicon declares, reading metric names at build time so a rename at the source moves the queries:
65
+
66
+ ```ts
67
+ import { Datasource, RedDashboard, SloDashboard, AgentDashboard } from "@intentius/chant-lexicon-grafana";
68
+ import { spans, genai } from "./collector"; // an otel SpanMetricsConnector and genAiComponents(...)
69
+ import { checkout } from "./slo"; // a prometheus Slo(...)
70
+
71
+ const services = RedDashboard({ spanMetrics: spans, datasource: prometheus }); // rate, errors, p50/p95/p99 per service
72
+ const checkoutSlo = SloDashboard({ slo: checkout, datasource: prometheus }); // SLI, budget left, burn rate per alert window
73
+ const agents = AgentDashboard({ genAi: genai, datasource: prometheus }); // per model and tool, tokens per model
74
+
75
+ export { services, checkoutSlo, agents };
76
+ ```
77
+
78
+ Pass the `prometheus` exporter as `exporter` to `RedDashboard` when its `namespace` changes the names. `datasource` may be a `{ type: "prometheus", uid }` ref to a datasource declared elsewhere. Never hand-write the span-metric or SLO series names in a query next to these; use `spanMetricsNames()` (otel), `sloMetrics()` (prometheus) or `genAiMetrics()` (otel), or the composites' `redQueries`, `sloQueries` and `agentQueries`.
79
+
80
+ ## Rules
81
+
82
+ - GRAF101: every panel, query and query variable names a declared datasource. GRAF102: of the right type.
83
+ - GRAF103: every `$name`/`${name}` in a query, title or repeat is a declared variable (`$__*` are Grafana's own).
84
+ - GRAF104: unique dashboard uids, datasource uids and names, panel ids, variable names and refIds.
85
+ - GRAF105: panels fit the 24-column grid and don't overlap.
86
+ - GRAF106: uids of 1-40 letters, digits, `-`, `_`; dashboards have titles.
87
+ - GRAF107: the dashboard matches Grafana's schema at the pinned version.
88
+
89
+ GRAF101 and GRAF102 compare against the datasources in the same build root, so keep datasources and dashboards in one `chant build` (chant #1939).
90
+
91
+ ## Other plugins
92
+
93
+ `definePanel<Options, Custom>()({ type, className, defaultSize })` adds a panel plugin chant doesn't ship, and `defineQuery<Model>()({ datasourceType, className })` a datasource's query class. Both serialize and lint like the built-ins.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env tsx
2
+ export {};
3
+ //# sourceMappingURL=fetch-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-cli.d.ts","sourceRoot":"","sources":["../../src/spec/fetch-cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Read the vendored Grafana schemas (`src/spec/schemas/*.jsonschema.json`) and check
3
+ * them against the digests in `GRAFANA_SCHEMA_PIN`.
4
+ */
5
+ import { type SchemaName } from "../pin.js";
6
+ /**
7
+ * Where the vendored files live: beside this module, under `src/`, so they
8
+ * ship with the source the package runs from and GRAF107 can read them.
9
+ * A function, not a module-scope constant, so edge bundles that import the
10
+ * lexicon never evaluate a filesystem path at load.
11
+ */
12
+ export declare function schemasDir(): string;
13
+ export declare function schemaPath(name: SchemaName): string;
14
+ export declare function sha256(text: string | Buffer): string;
15
+ /** The raw bytes of one vendored schema. */
16
+ export declare function readSchemaText(name: SchemaName): string;
17
+ /** One vendored schema, parsed (cached per process). */
18
+ export declare function loadSchema(name: SchemaName): Record<string, unknown>;
19
+ /** Vendored files whose digest does not match the pin, with what was found. */
20
+ export declare function digestMismatches(): Array<{
21
+ name: SchemaName;
22
+ expected: string;
23
+ actual: string;
24
+ }>;
25
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/spec/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAoC,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEpD;AAED,4CAA4C;AAC5C,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEvD;AAID,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOpE;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAQhG"}
@@ -0,0 +1,3 @@
1
+ // The grafana lexicon's entity classes are hand-written in src/, with panel
2
+ // and query types generated into src/schema/; this entry re-exports them.
3
+ export * from "../index.js";
package/dist/util.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ /** Small helpers shared by the entity modules and the builder. */
2
+ /** Every field optional, all the way down; arrays keep their element type partial too. */
3
+ export type DeepPartial<T> = T extends (infer U)[] ? DeepPartial<U>[] : T extends object ? {
4
+ [K in keyof T]?: DeepPartial<T[K]>;
5
+ } : T;
6
+ /** Grafana's uid alphabet: letters, digits, `-` and `_`, at most 40 characters. */
7
+ export declare const UID_PATTERN: RegExp;
8
+ export declare function isValidUid(uid: string): boolean;
9
+ /**
10
+ * A uid from free text (an export name or a datasource name): camelCase and
11
+ * spaces become `-`, anything outside the uid alphabet is dropped, and the
12
+ * result is cut to 40 characters.
13
+ */
14
+ export declare function slugUid(text: string): string;
15
+ /** Copy `value` with every `undefined` property dropped, recursively; keeps key order. */
16
+ export declare function compact<T>(value: T): T;
17
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAElE,0FAA0F;AAC1F,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC9C,WAAW,CAAC,CAAC,CAAC,EAAE,GAChB,CAAC,SAAS,MAAM,GACd;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACtC,CAAC,CAAC;AAER,mFAAmF;AACnF,eAAO,MAAM,WAAW,QAA0B,CAAC;AAEnD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ5C;AAED,0FAA0F;AAC1F,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAUtC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env tsx
2
+ export {};
3
+ //# sourceMappingURL=validate-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-cli.d.ts","sourceRoot":"","sources":["../src/validate-cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The checks behind GRAF101-GRAF107, as plain functions over built Grafana
3
+ * output: dashboard JSON documents and provisioned datasources. The
4
+ * post-synth checks run them over a build; anything else holding the same
5
+ * JSON (a test, another lexicon embedding dashboards) can call them directly.
6
+ *
7
+ * Checks that join a dashboard against datasources (GRAF101, GRAF102) only
8
+ * see the datasources passed in. In a build that is the build root being
9
+ * built (chant #1939): with no datasource declared in it they report
10
+ * nothing, and a datasource declared in another build root looks undeclared.
11
+ */
12
+ import type { ProvisionedDatasource } from "./build.js";
13
+ export type GrafanaIssueCode = "GRAF101" | "GRAF102" | "GRAF103" | "GRAF104" | "GRAF105" | "GRAF106" | "GRAF107";
14
+ export interface GrafanaIssue {
15
+ code: GrafanaIssueCode;
16
+ severity: "error" | "warning";
17
+ message: string;
18
+ /** The dashboard uid or datasource name the issue is about. */
19
+ entity?: string;
20
+ }
21
+ export interface DashboardDoc {
22
+ /** Where it came from, e.g. its output file. */
23
+ source?: string;
24
+ json: Record<string, unknown>;
25
+ }
26
+ export interface GrafanaArtifacts {
27
+ dashboards: DashboardDoc[];
28
+ datasources: ProvisionedDatasource[];
29
+ }
30
+ /** Every variable name referenced in a string. */
31
+ export declare function variableReferences(text: string): string[];
32
+ export declare function checkDatasourceRefs(a: GrafanaArtifacts): GrafanaIssue[];
33
+ export declare function checkVariables(a: GrafanaArtifacts): GrafanaIssue[];
34
+ export declare function checkDuplicates(a: GrafanaArtifacts): GrafanaIssue[];
35
+ export declare function checkGrid(a: GrafanaArtifacts): GrafanaIssue[];
36
+ export declare function checkIdentity(a: GrafanaArtifacts): GrafanaIssue[];
37
+ export declare function checkSchema(a: GrafanaArtifacts): GrafanaIssue[];
38
+ /** The issues one check finds. */
39
+ export declare function issuesFor(code: GrafanaIssueCode, a: GrafanaArtifacts): GrafanaIssue[];
40
+ /** Every issue every check finds, in code order. */
41
+ export declare function validateGrafanaOutput(a: GrafanaArtifacts): GrafanaIssue[];
42
+ //# sourceMappingURL=validate-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-output.d.ts","sourceRoot":"","sources":["../src/validate-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAOrD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,WAAW,EAAE,qBAAqB,EAAE,CAAC;CACtC;AA2CD,kDAAkD;AAClD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAIzD;AAoCD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CA0DvE;AAID,wBAAgB,cAAc,CAAC,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAkClE;AAaD,wBAAgB,eAAe,CAAC,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAyBnE;AAsBD,wBAAgB,SAAS,CAAC,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAiC7D;AAID,wBAAgB,aAAa,CAAC,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CA2BjE;AAID,wBAAgB,WAAW,CAAC,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAa/D;AAYD,kCAAkC;AAClC,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAErF;AAED,oDAAoD;AACpD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAEzE"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Validate the grafana lexicon's own artifacts: the vendored schemas match
3
+ * their pinned digests, the committed schema types match what generate would
4
+ * write, every required class is in the registry, and every built-in panel
5
+ * renders to a dashboard the pinned schema accepts.
6
+ */
7
+ import type { ValidateResult } from "@intentius/chant/codegen/validate";
8
+ export type { ValidateCheck, ValidateResult } from "@intentius/chant/codegen/validate";
9
+ /** Every entity class the package must keep exporting. */
10
+ export declare const REQUIRED_NAMES: string[];
11
+ export declare function validate(): Promise<ValidateResult>;
12
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,mCAAmC,CAAC;AASvF,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEvF,0DAA0D;AAC1D,eAAO,MAAM,cAAc,UAsB1B,CAAC;AAIF,wBAAsB,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,CA2DxD"}