Typed metadata envelope. Holds non-validation, non-rendering-critical
information (docs, aliases, examples, deprecation, role). Per-scalar
validation constraints live on the relevant scalar’s typed substructure,
not here.
Inline numeric refinement. none on a numeric type means unconstrained
(the common case). The empty restriction set is never encoded as some:
producers normalize it to none, decoders normalize a decoded empty to
none. unit is schema/help metadata only.
An unforgeable handle to a permission card held by the runtime. The
handle is opaque to guests: components can hold, pass, derive, install,
and revoke cards only through the golem:permissions interfaces. When
carried in a schema-value-tree (see
schema-value-node::permission-card-handle) the handle is transferred
by ownership; the host converts it to/from its internal trusted
card-store representation at the boundary. The wire form is the card-id
(UUID) alone — no grants, parents, or metadata cross the wire as
authority.
A promise ID is a value that can be passed to an external Golem API to
complete that promise from an arbitrary external source, while Golem
agents can await for this completion.
— Quantity —
Fixed-point decimal value with unit: numeric value = mantissa * 10^(-scale).
unit is a free-form string at the value level; the schema’s
quantity-spec constrains the accepted set.
An affine wrapper around a native Component Model stream of schema
values. The indirection lets a stream occur anywhere in a recursive
schema-value-tree while preserving the native stream endpoint.
An unforgeable handle to sensitive material held by the runtime. The
handle is opaque to guests: components can pass it through schema values
and reveal it only through capability-gated host interfaces.
Stable, language-independent identifier for a named type definition.
Must be unique within the enclosing schema-graph. Conventional format
is a dot-separated namespace path (e.g., "myapp.users.user"). Each
SDK provides a default derivation rule (typically based on the local
language’s type name); cross-language interop requires the same
type-id on every side, which users can pin via the SDK’s named
attribute.