input block field declarations. The typechecker validates that types are well-formed and that default values are type-compatible.
Primitive types
| Type | Description | Python config accessor |
|---|---|---|
string | UTF-8 string | config.get() / config.require() |
bool | Boolean | config.get_bool() / config.require_bool() |
number | Integer or float | config.get_float() / config.require_float() |
int | Integer | config.get_int() / config.require_int() |
any | Unconstrained | config.require_object() |
Collection types
list(T)
An ordered sequence of values of type T:set(T)
An unordered collection of unique values:map(T)
A string-keyed map of values of type T:tuple([T1, T2, …])
A fixed-length sequence with per-position types:Object type
A record with named, typed fields:optional(T)
Makes any type optional with anull default:
optional(T) means the field will be null if not set; optional(T, default) means the field will be default if not set.
Named types
A dotted identifier path that names a provider-contributed or user-defined type:any for config reading purposes.
Nested types
Types compose arbitrarily:Default value type checking
The typechecker catches obvious mismatches between default literal kinds and declared types:| Mismatch | Error |
|---|---|
name: string = 42 | default value is a number literal but field type is string |
name: string = true | default value is a boolean literal but field type is string |
count: number = "30s" | default value is a string literal but field type is number |
count: number = true | default value is a boolean literal but field type is number |
enabled: bool = "yes" | default value is a string literal but field type is bool |
enabled: bool = 1 | default value is a number literal but field type is bool |

