Packages
caffeine_lang
4.6.2
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/constants
import caffeine_lang/linker/artifacts.{
type Artifact, Artifact, DependencyRelations, ParamInfo, SLO,
}
import caffeine_lang/types.{
CollectionType, Defaulted, Dict, InclusiveRange, Integer, List as ListType,
ModifierType, NumericType, OneOf, Optional, Percentage, PrimitiveType,
RecordType, RefinementType, SemanticType, String as StringType, URL,
}
import gleam/dict
import gleam/set
/// Returns the hardcoded standard library artifacts.
pub fn standard_library() -> List(Artifact) {
[slo_artifact(), dependency_relations_artifact()]
}
fn slo_artifact() -> Artifact {
Artifact(
type_: SLO,
description: "A Service Level Objective that monitors a metric query against a threshold over a rolling window.",
params: 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",
),
),
#(
"vendor",
ParamInfo(
type_: RefinementType(OneOf(
PrimitiveType(StringType),
set.from_list([
constants.vendor_datadog,
constants.vendor_honeycomb,
constants.vendor_dynatrace,
constants.vendor_newrelic,
]),
)),
description: "Observability platform",
),
),
#(
"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",
),
),
]),
)
}
fn dependency_relations_artifact() -> Artifact {
Artifact(
type_: DependencyRelations,
description: "Declares soft and hard dependencies between services for dependency mapping.",
params: dict.from_list([
#(
"relations",
ParamInfo(
type_: RecordType(
dict.from_list([
#("hard", CollectionType(ListType(PrimitiveType(StringType)))),
#("soft", CollectionType(ListType(PrimitiveType(StringType)))),
]),
),
description: "Map of dependency type to list of service names",
),
),
]),
)
}