ConstEvery declared scope, in catalog order.
The scopes.
Look up a scope by id.
The scope id (e.g. "skill.base"), or nullish for none.
The scope, or undefined when the id is unknown or nullish.
Look up a scope by id, failing loudly when it does not exist. Use at call sites that name a scope literally, so a typo or a renamed scope is a startup error rather than a silently unvalidated expression.
The scope id.
The scope.
ExpressionScope — what a single scope provides.
The catalog of every place SoHL evaluates a sohl.entity.expr.SafeExpression, and what is in scope there.
Unlike sohl.entity.expr.expressionHelpers, this registry is closed: scopes describe SoHL's own call sites, so they are declared in the source catalog (
src/entity/expr/expression-scopes.mjs) and never registered at runtime. A world extends the expression language by adding helpers, not by inventing call sites.