Packages
caffeine_lang
5.4.1
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
src/caffeine_lang/standard_library/artifacts.gleam
/// Let's all be honest, raw structures here feels a bit icky. However, we used to have a bunch of real
/// parser and semantic analysis logic in its place that just, on compile time, consumed a raw json
/// hardcoded string. That's way more offensive. We will work towards a better state, just know that even
/// in its existing offensive state right now (02/01/2026), it's much better than it was before.
/// - Rob
import caffeine_lang/linker/artifacts.{type ParamInfo, ParamInfo}
import caffeine_lang/types.{
CollectionType, Defaulted, Dict, InclusiveRange, Integer, List as ListType,
ModifierType, NumericType, Optional, Percentage, PrimitiveType, RecordType,
RefinementType, SemanticType, String as StringType, URL,
}
import gleam/dict
/// Returns the hardcoded standard library SLO params.
pub fn slo_params() -> dict.Dict(String, ParamInfo) {
dict.from_list([
#(
"threshold",
ParamInfo(
type_: PrimitiveType(NumericType(Percentage)),
description: "Target percentage (e.g., 99.9%)",
),
),
#(
"window_in_days",
ParamInfo(
type_: ModifierType(Defaulted(
RefinementType(InclusiveRange(
PrimitiveType(NumericType(Integer)),
"1",
"90",
)),
"30",
)),
description: "Rolling window for measurement (1-90 days)",
),
),
#(
"indicators",
ParamInfo(
type_: CollectionType(Dict(
PrimitiveType(StringType),
PrimitiveType(StringType),
)),
description: "Named SLI measurement expressions",
),
),
#(
"evaluation",
ParamInfo(
type_: PrimitiveType(StringType),
description: "How to evaluate indicators as an SLI",
),
),
#(
"tags",
ParamInfo(
type_: ModifierType(
Optional(
CollectionType(Dict(
PrimitiveType(StringType),
PrimitiveType(StringType),
)),
),
),
description: "An optional set of tags to append to the SLO artifact",
),
),
#(
"runbook",
ParamInfo(
type_: ModifierType(Optional(PrimitiveType(SemanticType(URL)))),
description: "An optional runbook URL surfaced via the SLO description",
),
),
#(
"depends_on",
ParamInfo(
type_: ModifierType(
Optional(
RecordType(
dict.from_list([
#(
"hard",
ModifierType(
Optional(
CollectionType(ListType(PrimitiveType(StringType))),
),
),
),
#(
"soft",
ModifierType(
Optional(
CollectionType(ListType(PrimitiveType(StringType))),
),
),
),
]),
),
),
),
description: "Optional soft and hard dependency declarations for dependency mapping",
),
),
])
}