@kanonak-protocol/expression 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -2,36 +2,95 @@
2
2
  * `@kanonak-protocol/expression` — the Kanonak expression RUNTIME.
3
3
  *
4
4
  * A small, deterministic tree-walker that folds a `kanonak.org/transformations`
5
- * (`tx`) + `kanonak.org/math` expression tree to a single number. Generated SDKs
5
+ * (`tx`) + `kanonak.org/math` expression tree to a value. Generated SDKs
6
6
  * reference it so a typed expression can be *run*, not just *represented*.
7
7
  *
8
8
  * Three layers, exactly as the six-language proof established:
9
9
  *
10
- * 1. DISPATCH — derived from the ontology. An operator's arity falls out of its
11
- * `tx` superclass: UnaryNumericOp -> unary `value`; BinaryArithmetic /
12
- * BinaryComparison -> binary; BooleanLogic -> n-ary `operands`; plus the two
13
- * structural shapes the hierarchy can't imply (`Not`'s `operand`, `Clip`'s
14
- * ternary). The OPERATOR_ARITY table below is that derivation, frozen.
10
+ * 1. DISPATCH — derived from the ontology. An operator's shape falls out of
11
+ * its `tx` superclass: UnaryNumericOp -> unary `value`; BinaryArithmetic /
12
+ * BinaryComparison -> binary; BooleanLogic -> n-ary `operands`;
13
+ * ListSourcedExpression / ListAggregate -> `source`; IteratingExpression
14
+ * -> `source` + `loopVar` + a body; plus the structural shapes the
15
+ * hierarchy can't imply (`Not`'s `operand`, `Clip`'s ternary, `Contains`'
16
+ * haystack/needle, `Matches`' matchSource/pattern). The tables below are
17
+ * that derivation, frozen.
15
18
  *
16
- * 2. PRIMITIVES — the one authored, determinism-bearing artifact. PRIMITIVES
17
- * maps each operator URI to its fold. Determinism traps live here and are
18
- * matched in every language port (Round half-away-from-zero, floored Modulo,
19
- * Sign(0)=0, comparisons as 1/0).
19
+ * 2. PRIMITIVES — the authored, determinism-bearing artifact. Tables map
20
+ * each operator URI to its fold. Determinism traps live here and are
21
+ * matched in every language port (Round half-away-from-zero, floored
22
+ * Modulo, Sign(0)=0, comparisons as 1/0, RFC 8785-style number
23
+ * stringification in Join, the pinned Matches regex subset).
20
24
  *
21
25
  * 3. THE FOLD — `evaluate`, a fixed shape: operators recurse + apply a
22
- * primitive; literals return their numeric value; EVERYTHING ELSE (a typed
23
- * VarRef, a domain `Step`/`Time`/`Smooth`, any future leaf) is handed to the
24
- * caller's `resolve(node, ctx, evaluate)`. The runtime is a pure operator
25
- * engine; binding and domain-leaf semantics are the caller's business. It
26
- * never privileges `tx.VarRef` — that is just one leaf a domain may resolve.
27
- *
28
- * Value domain: uniform numeric. Booleans and comparison results are `1`/`0`, so
29
- * every language stays on one numeric path. `EXPRESSION_RUNTIME_VERSION` freezes
30
- * the determinism contract; a change to any primitive, value rule, or dispatch
31
- * requires a NEW version, never an edit in place.
26
+ * primitive; literals return their value; EVERYTHING ELSE (a typed
27
+ * VarRef, a domain `Step`/`Time`/`Smooth`, a host graph read, any future
28
+ * leaf) is handed to the caller's `resolve(node, ctx, evaluate)`. The
29
+ * runtime is a pure operator engine; binding, graph access, and
30
+ * domain-leaf semantics are the caller's business. A property read is
31
+ * just a caller leaf that returns a list — the kernel NEVER touches a
32
+ * graph.
33
+ *
34
+ * VALUE DOMAIN (expressionRuntimeVersion "2"): `number | string | ref | list`.
35
+ *
36
+ * - Booleans and comparison results remain `1`/`0` numbers (the v1 rule).
37
+ * - A `ref` is a canonical versionless URI identity (`{ ref: string }`),
38
+ * compared by URI-key equality — the same identity rule the ordered
39
+ * comparisons and `tx.Equals` share.
40
+ * - A `list` is an ordered sequence of values.
41
+ * - There is NO null/undefined: ABSENCE IS THE EMPTY LIST. A caller leaf
42
+ * for a property with no values returns `[]`; `IsSet` distinguishes.
43
+ *
44
+ * ERROR CONTRACT (v2 extension of the v1 fail-loud discipline):
45
+ *
46
+ * - COMPUTATIONS FAIL LOUD: an arithmetic/unary-numeric/boolean-logic
47
+ * operator whose operand is not a number, an aggregate over a non-numeric
48
+ * element, `Min`/`Max`/`Average` on an empty list, a nested list in
49
+ * `Join`, a non-string `Matches` source, an out-of-subset `Matches`
50
+ * pattern — all raise `ExpressionError`, never coerce.
51
+ * - PREDICATES FAIL CLOSED: `Equals` and the ordering comparisons on
52
+ * cross-kind or non-numeric operands return `0`, never error (the SHACL
53
+ * and reference-engine rule: a non-comparable value is a falsified
54
+ * constraint, not a crash).
55
+ *
56
+ * v1 COMPATIBILITY: the value domain is a strict superset and no numeric
57
+ * primitive changed — every v1 parity vector passes unchanged under v2. The
58
+ * conformance harness runs the v1 vector file through this kernel as the
59
+ * regression gate.
60
+ *
61
+ * LAMBDA BINDING (the one genuinely-new dispatch shape): the iterating
62
+ * operators (`Filter`, `ListMap`, `ForEach`) bind their `loopVar` per element.
63
+ * Within an iterating operator's body — and ONLY there — a `tx.VarRef` whose
64
+ * `varName` names a lexically-enclosing `loopVar` is resolved by the kernel to
65
+ * the bound element (innermost binder wins). Every other leaf, including a
66
+ * `VarRef` naming anything else, still goes to the caller's `resolve`. This is
67
+ * the scoped exception to "the kernel never privileges VarRef": VarRef is the
68
+ * bound-variable mechanism of the kernel's own binders, nothing more. The
69
+ * remaining iterating family (WindowedMap, PairwiseMap, Scan, DistinctBy,
70
+ * PartitionBy) is additive within v2 under this same reserved shape.
71
+ *
72
+ * `EXPRESSION_RUNTIME_VERSION` freezes the determinism contract; a change to
73
+ * any primitive, value rule, or dispatch entry requires a NEW version, never
74
+ * an edit in place. Adding an operator, or widening the Matches subset (an
75
+ * error becoming a defined result), is additive WITHIN a version.
32
76
  */
33
77
  /** The frozen expression-runtime version (determinism contract). Not hashed. */
34
- export declare const EXPRESSION_RUNTIME_VERSION = "1";
78
+ export declare const EXPRESSION_RUNTIME_VERSION = "2";
79
+ /**
80
+ * A reference value — a member's canonical versionless URI identity
81
+ * (`publisher/package/name`). Distinct from a string so `Equals` can hold the
82
+ * cross-kind-is-false rule: a URI is never equal to the string spelling of it.
83
+ */
84
+ export interface RefValue {
85
+ ref: string;
86
+ }
87
+ /**
88
+ * The v2 value domain. Booleans are `1`/`0` numbers; absence is the empty
89
+ * list; there is no null.
90
+ */
91
+ export type Value = number | string | RefValue | Value[];
92
+ /** Discriminate a `RefValue` from the other object shape (arrays). */
93
+ export declare function isRef(v: Value): v is RefValue;
35
94
  /** A node in the expression tree. `type` is the operator/literal/leaf canonical
36
95
  * URI (versionless: `publisher/package/name`); operand keys are the frozen `tx`
37
96
  * operand property local names. Unknown fields are ignored by the kernel and are
@@ -41,11 +100,12 @@ export interface ExprNode {
41
100
  [operandOrValue: string]: unknown;
42
101
  }
43
102
  /** Resolve any node the kernel does not recognise as an operator or literal — a
44
- * binding (`tx.VarRef`, a domain's typed `refersTo` VarRef) or a domain leaf
45
- * (`Step`, `Time`, `Smooth`…) — to a number. `ctx` is opaque caller state (the
46
- * binding env, a sim clock, integration state). `evaluate` is handed back so a
103
+ * binding (`tx.VarRef`, a domain's typed `refersTo` VarRef), a host graph read
104
+ * (a property-read leaf returning a list), or a domain leaf (`Step`, `Time`,
105
+ * `Smooth`…) — to a value. `ctx` is opaque caller state (the binding env, a
106
+ * graph handle, a sim clock, integration state). `evaluate` is handed back so a
47
107
  * domain leaf containing sub-expressions can recurse into the kernel. */
48
- export type Resolve<C> = (node: ExprNode, ctx: C, evaluate: (n: ExprNode, ctx: C) => number) => number;
108
+ export type Resolve<C> = (node: ExprNode, ctx: C, evaluate: (n: ExprNode, ctx: C) => Value) => Value;
49
109
  /**
50
110
  * The transitive closures ordered comparisons consult, keyed by the ordering
51
111
  * property's canonical URI, then by member: `closures[property][from]` is the
@@ -71,29 +131,73 @@ export interface EvalOptions<C> {
71
131
  export declare class ExpressionError extends Error {
72
132
  }
73
133
  /**
74
- * Evaluate an expression tree to a number. Operators fold via the frozen
75
- * dispatch + primitive tables; literals yield their numeric value; any other
76
- * node is delegated to `resolve`. `options` carries the ordered-comparison
77
- * context (closures + identity-leaf resolution) and is only consulted when an
134
+ * Validate a `Matches` pattern against the pinned subset — the intersection of
135
+ * RE2 and the host regex engines, chosen so every port compiles the same
136
+ * pattern to the same language. RE2 is both the restrictive common denominator
137
+ * and ReDoS-safe (no catastrophic backtracking), which is a REQUIREMENT for a
138
+ * predicate that may gate on adversarial input. Out-of-subset constructs are a
139
+ * LOUD error, the same discipline as Round/Modulo; WIDENING the subset later
140
+ * (an error becoming a defined result) is additive within v2.
141
+ *
142
+ * COUNTING UNIT — pinned: `.` and quantifiers count Unicode CODE POINTS, in
143
+ * every port. An astral-plane character (a surrogate pair in UTF-16 hosts)
144
+ * is ONE `.`, and `.{3}` matches exactly three code points — matching RE2's
145
+ * rune model and Python's, and what SHACL/SPARQL string length means. The
146
+ * UTF-16 engines must opt in (this port compiles with the `u` flag; Java
147
+ * and C# ports normalize equivalently) — without the pin, `.{m,n}` counts
148
+ * different units across exactly these seven targets, and the length
149
+ * lowering (`(?s)^.{m,}$`) would judge astral input differently per
150
+ * language. The astral vectors gate this: a port that counts code units
151
+ * fails conformance, not the tenant.
152
+ *
153
+ * Allowed: literals; `.`; anchors `^` `$`; alternation `|`; groups `(...)`,
154
+ * `(?:...)`; a WHOLE-PATTERN flag prefix over `i`/`m`/`s` (`(?i)` at position
155
+ * 0 only, each flag at most once — each port translates it to its host flag
156
+ * mechanism); quantifiers
157
+ * `*` `+` `?` `{m}` `{m,}` `{m,n}`; character classes with ranges and
158
+ * negation; escapes `\d \D \w \W \s \S \b \B \n \r \t \f \v \xHH`, escaped
159
+ * syntax punctuation (`\.` `\*` `\+` `\?` `\(` `\)` `\[` `\]` `\{` `\}`
160
+ * `\|` `\^` `\$` `\\` `\/`), and `\-` inside character classes.
161
+ *
162
+ * Rejected (divergent or unsafe across engines): lookahead/lookbehind, named
163
+ * groups, backreferences (`\1`…, `\k`), MID-pattern flag groups (`(?i:…)` —
164
+ * not portable to the JS and Python engines), a REPEATED flag in the prefix
165
+ * (`(?ii)` — the JS engine rejects it while the Go, Python and Rust engines
166
+ * accept it), `\p{…}`/`\P{…}` unicode
167
+ * property classes, POSIX classes (`[[:alpha:]]`), class intersection
168
+ * (`&&`), atomic groups, conditionals, comments, octal/`\u`/`\x{…}` escapes,
169
+ * escaped space (`\ `), `\-` outside a class, and a bare unescaped `{` that
170
+ * is not a quantifier (literal braces must be escaped — engines disagree on
171
+ * the lenient reading, so the subset requires the explicit form).
172
+ */
173
+ export declare function validateMatchesPattern(pattern: string): void;
174
+ /**
175
+ * Evaluate an expression tree to a value. Operators fold via the frozen
176
+ * dispatch + primitive tables; literals yield their value; any other node is
177
+ * delegated to `resolve`. `options` carries the ordered-comparison context
178
+ * (closures + identity-leaf resolution) and is only consulted when an
78
179
  * `IsAtLeast` / `Dominates` node is reached.
79
180
  */
80
- export declare function evaluate<C = unknown>(node: ExprNode, ctx: C, resolve: Resolve<C>, options?: EvalOptions<C>): number;
181
+ export declare function evaluate<C = unknown>(node: ExprNode, ctx: C, resolve: Resolve<C>, options?: EvalOptions<C>): Value;
81
182
  /**
82
183
  * One node of an evaluation trace — the verdict tree {@link explain} returns.
83
184
  *
84
185
  * Mirrors the expression: `type` is the node's type URI, `value` its result
85
186
  * (`1`/`0` for booleans), `children` the operand traces in evaluation order.
86
187
  * A short-circuited operand is simply ABSENT from `children` — the trace is
87
- * truthful about what ran. Ordered comparisons carry their resolved operand
88
- * identities as `leftRef`/`rightRef` instead of children, since their
89
- * operands are identities rather than numeric folds.
188
+ * truthful about what ran. An iterating operator's children are its source
189
+ * trace followed by one body trace per visited element. Ordered comparisons
190
+ * carry their resolved operand identities as `leftRef`/`rightRef` instead of
191
+ * children, since their operands are identities rather than value folds.
90
192
  *
91
193
  * This is a runtime return shape, not an ontology class: nothing authors a
92
- * trace, so nothing about it is modelled or serialized as vocabulary.
194
+ * trace, so nothing about it is modelled or serialized as vocabulary. (A host
195
+ * assembling an AUTHORED report — e.g. a SHACL ValidationReport — builds it
196
+ * FROM these traces; the vocabulary lives with the host's ontology.)
93
197
  */
94
198
  export interface TraceNode {
95
199
  type: string;
96
- value: number;
200
+ value: Value;
97
201
  children: TraceNode[];
98
202
  leftRef?: string;
99
203
  rightRef?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAK9C;;;+CAG+C;AAC/C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED;;;;yEAIyE;AACzE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,KAAK,MAAM,CAAC;AAEvG;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;AAE7E;;;kEAGkE;AAClE,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;AAE/D;;+DAE+D;AAC/D,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CAC5B;AAED,qBAAa,eAAgB,SAAQ,KAAK;CAAG;AAsK7C;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAClC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,MAAM,CAkDR;AAUD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,CAAC,GAAG,OAAO,EACjC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,SAAS,CAiEX"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAEH,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAK9C;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,EAAE,CAAC;AAEzD,sEAAsE;AACtE,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,QAAQ,CAE7C;AAED;;;+CAG+C;AAC/C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED;;;;;yEAKyE;AACzE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC;AAErG;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;AAE7E;;;kEAGkE;AAClE,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;AAE/D;;+DAE+D;AAC/D,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CAC5B;AAED,qBAAa,eAAgB,SAAQ,KAAK;CAAG;AAmQ7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE5D;AA8PD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAClC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,KAAK,CAEP;AA8KD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,CAAC,GAAG,OAAO,EACjC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,SAAS,CAyKX"}
package/dist/index.js CHANGED
@@ -2,38 +2,86 @@
2
2
  * `@kanonak-protocol/expression` — the Kanonak expression RUNTIME.
3
3
  *
4
4
  * A small, deterministic tree-walker that folds a `kanonak.org/transformations`
5
- * (`tx`) + `kanonak.org/math` expression tree to a single number. Generated SDKs
5
+ * (`tx`) + `kanonak.org/math` expression tree to a value. Generated SDKs
6
6
  * reference it so a typed expression can be *run*, not just *represented*.
7
7
  *
8
8
  * Three layers, exactly as the six-language proof established:
9
9
  *
10
- * 1. DISPATCH — derived from the ontology. An operator's arity falls out of its
11
- * `tx` superclass: UnaryNumericOp -> unary `value`; BinaryArithmetic /
12
- * BinaryComparison -> binary; BooleanLogic -> n-ary `operands`; plus the two
13
- * structural shapes the hierarchy can't imply (`Not`'s `operand`, `Clip`'s
14
- * ternary). The OPERATOR_ARITY table below is that derivation, frozen.
10
+ * 1. DISPATCH — derived from the ontology. An operator's shape falls out of
11
+ * its `tx` superclass: UnaryNumericOp -> unary `value`; BinaryArithmetic /
12
+ * BinaryComparison -> binary; BooleanLogic -> n-ary `operands`;
13
+ * ListSourcedExpression / ListAggregate -> `source`; IteratingExpression
14
+ * -> `source` + `loopVar` + a body; plus the structural shapes the
15
+ * hierarchy can't imply (`Not`'s `operand`, `Clip`'s ternary, `Contains`'
16
+ * haystack/needle, `Matches`' matchSource/pattern). The tables below are
17
+ * that derivation, frozen.
15
18
  *
16
- * 2. PRIMITIVES — the one authored, determinism-bearing artifact. PRIMITIVES
17
- * maps each operator URI to its fold. Determinism traps live here and are
18
- * matched in every language port (Round half-away-from-zero, floored Modulo,
19
- * Sign(0)=0, comparisons as 1/0).
19
+ * 2. PRIMITIVES — the authored, determinism-bearing artifact. Tables map
20
+ * each operator URI to its fold. Determinism traps live here and are
21
+ * matched in every language port (Round half-away-from-zero, floored
22
+ * Modulo, Sign(0)=0, comparisons as 1/0, RFC 8785-style number
23
+ * stringification in Join, the pinned Matches regex subset).
20
24
  *
21
25
  * 3. THE FOLD — `evaluate`, a fixed shape: operators recurse + apply a
22
- * primitive; literals return their numeric value; EVERYTHING ELSE (a typed
23
- * VarRef, a domain `Step`/`Time`/`Smooth`, any future leaf) is handed to the
24
- * caller's `resolve(node, ctx, evaluate)`. The runtime is a pure operator
25
- * engine; binding and domain-leaf semantics are the caller's business. It
26
- * never privileges `tx.VarRef` — that is just one leaf a domain may resolve.
26
+ * primitive; literals return their value; EVERYTHING ELSE (a typed
27
+ * VarRef, a domain `Step`/`Time`/`Smooth`, a host graph read, any future
28
+ * leaf) is handed to the caller's `resolve(node, ctx, evaluate)`. The
29
+ * runtime is a pure operator engine; binding, graph access, and
30
+ * domain-leaf semantics are the caller's business. A property read is
31
+ * just a caller leaf that returns a list — the kernel NEVER touches a
32
+ * graph.
27
33
  *
28
- * Value domain: uniform numeric. Booleans and comparison results are `1`/`0`, so
29
- * every language stays on one numeric path. `EXPRESSION_RUNTIME_VERSION` freezes
30
- * the determinism contract; a change to any primitive, value rule, or dispatch
31
- * requires a NEW version, never an edit in place.
34
+ * VALUE DOMAIN (expressionRuntimeVersion "2"): `number | string | ref | list`.
35
+ *
36
+ * - Booleans and comparison results remain `1`/`0` numbers (the v1 rule).
37
+ * - A `ref` is a canonical versionless URI identity (`{ ref: string }`),
38
+ * compared by URI-key equality — the same identity rule the ordered
39
+ * comparisons and `tx.Equals` share.
40
+ * - A `list` is an ordered sequence of values.
41
+ * - There is NO null/undefined: ABSENCE IS THE EMPTY LIST. A caller leaf
42
+ * for a property with no values returns `[]`; `IsSet` distinguishes.
43
+ *
44
+ * ERROR CONTRACT (v2 extension of the v1 fail-loud discipline):
45
+ *
46
+ * - COMPUTATIONS FAIL LOUD: an arithmetic/unary-numeric/boolean-logic
47
+ * operator whose operand is not a number, an aggregate over a non-numeric
48
+ * element, `Min`/`Max`/`Average` on an empty list, a nested list in
49
+ * `Join`, a non-string `Matches` source, an out-of-subset `Matches`
50
+ * pattern — all raise `ExpressionError`, never coerce.
51
+ * - PREDICATES FAIL CLOSED: `Equals` and the ordering comparisons on
52
+ * cross-kind or non-numeric operands return `0`, never error (the SHACL
53
+ * and reference-engine rule: a non-comparable value is a falsified
54
+ * constraint, not a crash).
55
+ *
56
+ * v1 COMPATIBILITY: the value domain is a strict superset and no numeric
57
+ * primitive changed — every v1 parity vector passes unchanged under v2. The
58
+ * conformance harness runs the v1 vector file through this kernel as the
59
+ * regression gate.
60
+ *
61
+ * LAMBDA BINDING (the one genuinely-new dispatch shape): the iterating
62
+ * operators (`Filter`, `ListMap`, `ForEach`) bind their `loopVar` per element.
63
+ * Within an iterating operator's body — and ONLY there — a `tx.VarRef` whose
64
+ * `varName` names a lexically-enclosing `loopVar` is resolved by the kernel to
65
+ * the bound element (innermost binder wins). Every other leaf, including a
66
+ * `VarRef` naming anything else, still goes to the caller's `resolve`. This is
67
+ * the scoped exception to "the kernel never privileges VarRef": VarRef is the
68
+ * bound-variable mechanism of the kernel's own binders, nothing more. The
69
+ * remaining iterating family (WindowedMap, PairwiseMap, Scan, DistinctBy,
70
+ * PartitionBy) is additive within v2 under this same reserved shape.
71
+ *
72
+ * `EXPRESSION_RUNTIME_VERSION` freezes the determinism contract; a change to
73
+ * any primitive, value rule, or dispatch entry requires a NEW version, never
74
+ * an edit in place. Adding an operator, or widening the Matches subset (an
75
+ * error becoming a defined result), is additive WITHIN a version.
32
76
  */
33
77
  /** The frozen expression-runtime version (determinism contract). Not hashed. */
34
- export const EXPRESSION_RUNTIME_VERSION = '1';
78
+ export const EXPRESSION_RUNTIME_VERSION = '2';
35
79
  const TX = 'kanonak.org/transformations';
36
80
  const MATH = 'kanonak.org/math';
81
+ /** Discriminate a `RefValue` from the other object shape (arrays). */
82
+ export function isRef(v) {
83
+ return typeof v === 'object' && !Array.isArray(v);
84
+ }
37
85
  export class ExpressionError extends Error {
38
86
  }
39
87
  const UN = (operand) => ({ kind: 'unary', operand });
@@ -73,6 +121,23 @@ const OPERATOR_ARITY = {
73
121
  // semantics — handled explicitly in `evaluate`, not via the numeric tables.
74
122
  [`${MATH}/Clip`]: { kind: 'ternary', a: 'clipValue', b: 'clipLower', c: 'clipUpper' },
75
123
  };
124
+ /** IteratingExpression operators: `source` + `loopVar` + the body operand. */
125
+ const ITERATOR_BODY = {
126
+ [`${TX}/ForEach`]: 'emit',
127
+ [`${TX}/ListMap`]: 'mapBody',
128
+ [`${TX}/Filter`]: 'predicate',
129
+ };
130
+ /** KindPredicate operators the kernel can answer over ITS value domain.
131
+ * `IsBoolean` and `IsEmbedded` name kinds that exist only in a host object
132
+ * model (booleans are 1/0 numbers here; embedded nodes never enter the
133
+ * kernel), so they are NOT dispatch entries — they fall through to the
134
+ * caller's `resolve`, where the host answers with full fidelity. */
135
+ const KIND_PREDICATES = {
136
+ [`${TX}/IsString`]: (v) => typeof v === 'string',
137
+ [`${TX}/IsNumber`]: (v) => typeof v === 'number',
138
+ [`${TX}/IsReference`]: (v) => typeof v === 'object' && !Array.isArray(v),
139
+ [`${TX}/IsList`]: (v) => Array.isArray(v),
140
+ };
76
141
  /** Floored modulo (the host `%` truncates toward zero): Modulo(-7,3) = 2. */
77
142
  function flooredMod(a, b) {
78
143
  if (b === 0)
@@ -89,7 +154,21 @@ function requireDomain(ok, msg) {
89
154
  if (!ok)
90
155
  throw new ExpressionError(msg);
91
156
  }
92
- /** Unary/binary/ternary primitives, keyed by operator URI. The authored,
157
+ /** A computation operand must be a number — fail loud, never coerce. */
158
+ function requireNumber(v, op) {
159
+ if (typeof v !== 'number') {
160
+ throw new ExpressionError(`${op} requires a numeric operand, got ${kindOf(v)}`);
161
+ }
162
+ return v;
163
+ }
164
+ function kindOf(v) {
165
+ if (typeof v === 'number')
166
+ return 'number';
167
+ if (typeof v === 'string')
168
+ return 'string';
169
+ return Array.isArray(v) ? 'list' : 'ref';
170
+ }
171
+ /** Unary/binary numeric primitives, keyed by operator URI. The authored,
93
172
  * determinism-bearing table — matched per language. */
94
173
  const UNARY = {
95
174
  [`${TX}/Abs`]: (x) => Math.abs(x),
@@ -103,7 +182,7 @@ const UNARY = {
103
182
  [`${MATH}/Round`]: roundHalfAway,
104
183
  [`${MATH}/Sign`]: (x) => Math.sign(x),
105
184
  };
106
- const BINARY = {
185
+ const BINARY_ARITH = {
107
186
  [`${TX}/Add`]: (a, b) => a + b,
108
187
  [`${TX}/Subtract`]: (a, b) => a - b,
109
188
  [`${TX}/Multiply`]: (a, b) => a * b,
@@ -112,21 +191,380 @@ const BINARY = {
112
191
  [`${MATH}/Modulo`]: flooredMod,
113
192
  [`${MATH}/Minimum`]: (a, b) => Math.min(a, b),
114
193
  [`${MATH}/Maximum`]: (a, b) => Math.max(a, b),
115
- [`${TX}/Equals`]: (a, b) => bool(a === b),
194
+ };
195
+ /**
196
+ * Ordering comparisons are PREDICATES: on non-numeric operands they fail
197
+ * CLOSED (`0`), matching the reference engine and the SHACL rule that a
198
+ * non-comparable value falsifies a constraint. (Contrast the arithmetic
199
+ * table above, which fails loud.)
200
+ */
201
+ const BINARY_ORDER = {
116
202
  [`${TX}/GreaterThan`]: (a, b) => bool(a > b),
117
203
  [`${TX}/LessThan`]: (a, b) => bool(a < b),
118
204
  [`${TX}/GreaterThanOrEqual`]: (a, b) => bool(a >= b),
119
205
  [`${TX}/LessThanOrEqual`]: (a, b) => bool(a <= b),
120
206
  };
121
- /** Numeric value of a literal node, or `undefined` if it is not a literal. */
207
+ /**
208
+ * Polymorphic value equality — the full `tx.Equals` ontology contract
209
+ * (v1 implemented its numeric half):
210
+ *
211
+ * - number/number, string/string: value equality.
212
+ * - ref/ref: canonical versionless URI-key equality — identity-by-name,
213
+ * the same rule as the ordered comparisons.
214
+ * - lists: never equal (a list is a container, not a comparable value).
215
+ * - any cross-kind pair: false. Never errors.
216
+ */
217
+ function valuesEqual(a, b) {
218
+ if (typeof a === 'number' && typeof b === 'number')
219
+ return a === b;
220
+ if (typeof a === 'string' && typeof b === 'string')
221
+ return a === b;
222
+ if (typeof a === 'object' && typeof b === 'object' && !Array.isArray(a) && !Array.isArray(b)) {
223
+ return a.ref === b.ref;
224
+ }
225
+ return false;
226
+ }
227
+ /** Value of a literal node, or `undefined` if it is not a literal. In v2 the
228
+ * string and URI literals are kernel-known: `StringLiteral` yields its string,
229
+ * `UriLiteral` yields a ref value (its `refTo` IS its identity, the way an
230
+ * IntegerLiteral's number is its value). */
122
231
  function literalValue(node) {
123
232
  switch (node.type) {
124
233
  case `${TX}/IntegerLiteral`: return Number(node.integerLiteral);
125
234
  case `${TX}/DecimalLiteral`: return Number(node.decimalLiteral);
126
235
  case `${TX}/BooleanLiteral`: return bool(node.booleanLiteral === true || node.booleanLiteral === 'true');
236
+ case `${TX}/StringLiteral`: {
237
+ const s = node.stringLiteral;
238
+ if (typeof s !== 'string')
239
+ throw new ExpressionError('StringLiteral is missing stringLiteral');
240
+ return s;
241
+ }
242
+ case `${TX}/UriLiteral`: {
243
+ const ref = node.refTo;
244
+ if (typeof ref !== 'string' || ref.length === 0) {
245
+ throw new ExpressionError('UriLiteral is missing refTo');
246
+ }
247
+ return { ref };
248
+ }
127
249
  default: return undefined;
128
250
  }
129
251
  }
252
+ /**
253
+ * Stringify one Join element. Numbers follow the ECMAScript number-to-string
254
+ * rule — the same serialization RFC 8785 (JCS) pins and the canonical layer
255
+ * already implements in every port, so Join output is deterministic across
256
+ * languages. Refs stringify to their LOCAL name (the reference-engine rule for
257
+ * display joins). A nested list is a computation type error — loud.
258
+ */
259
+ function joinElement(v) {
260
+ if (typeof v === 'string')
261
+ return v;
262
+ if (typeof v === 'number')
263
+ return String(v);
264
+ if (Array.isArray(v))
265
+ throw new ExpressionError('Join cannot stringify a nested list');
266
+ return v.ref.slice(v.ref.lastIndexOf('/') + 1);
267
+ }
268
+ /** `IsSet`: absence is the empty list; the empty string is also unset (the
269
+ * reference-engine rule). Everything else — including `0` — is set. */
270
+ function isSet(v) {
271
+ if (typeof v === 'string')
272
+ return v.length > 0;
273
+ if (Array.isArray(v))
274
+ return v.length > 0;
275
+ return true;
276
+ }
277
+ /** The `source`-operand fold table for the non-iterating list family. */
278
+ const LIST_FOLDS = {
279
+ [`${TX}/Count`]: (list) => list.length,
280
+ [`${TX}/Sum`]: (list) => {
281
+ let total = 0;
282
+ for (const el of list)
283
+ total += requireNumber(el, 'Sum');
284
+ return total;
285
+ },
286
+ [`${TX}/Min`]: (list) => {
287
+ if (list.length === 0)
288
+ throw new ExpressionError('Min on an empty list is undefined; guard with IsSet');
289
+ let best = requireNumber(list[0], 'Min');
290
+ for (let i = 1; i < list.length; i++) {
291
+ const n = requireNumber(list[i], 'Min');
292
+ if (n < best)
293
+ best = n;
294
+ }
295
+ return best;
296
+ },
297
+ [`${TX}/Max`]: (list) => {
298
+ if (list.length === 0)
299
+ throw new ExpressionError('Max on an empty list is undefined; guard with IsSet');
300
+ let best = requireNumber(list[0], 'Max');
301
+ for (let i = 1; i < list.length; i++) {
302
+ const n = requireNumber(list[i], 'Max');
303
+ if (n > best)
304
+ best = n;
305
+ }
306
+ return best;
307
+ },
308
+ [`${TX}/Average`]: (list) => {
309
+ if (list.length === 0)
310
+ throw new ExpressionError('Average on an empty list is undefined; guard with IsSet');
311
+ let total = 0;
312
+ for (const el of list)
313
+ total += requireNumber(el, 'Average');
314
+ return total / list.length;
315
+ },
316
+ [`${TX}/Join`]: (list, node) => {
317
+ const sep = typeof node.separator === 'string' ? node.separator : '';
318
+ return list.map(joinElement).join(sep);
319
+ },
320
+ [`${TX}/Reverse`]: (list) => [...list].reverse(),
321
+ };
322
+ // ---------------------------------------------------------------------------
323
+ // Matches — the pinned RE2-compatible XSD-regex subset.
324
+ // ---------------------------------------------------------------------------
325
+ /**
326
+ * Validate a `Matches` pattern against the pinned subset — the intersection of
327
+ * RE2 and the host regex engines, chosen so every port compiles the same
328
+ * pattern to the same language. RE2 is both the restrictive common denominator
329
+ * and ReDoS-safe (no catastrophic backtracking), which is a REQUIREMENT for a
330
+ * predicate that may gate on adversarial input. Out-of-subset constructs are a
331
+ * LOUD error, the same discipline as Round/Modulo; WIDENING the subset later
332
+ * (an error becoming a defined result) is additive within v2.
333
+ *
334
+ * COUNTING UNIT — pinned: `.` and quantifiers count Unicode CODE POINTS, in
335
+ * every port. An astral-plane character (a surrogate pair in UTF-16 hosts)
336
+ * is ONE `.`, and `.{3}` matches exactly three code points — matching RE2's
337
+ * rune model and Python's, and what SHACL/SPARQL string length means. The
338
+ * UTF-16 engines must opt in (this port compiles with the `u` flag; Java
339
+ * and C# ports normalize equivalently) — without the pin, `.{m,n}` counts
340
+ * different units across exactly these seven targets, and the length
341
+ * lowering (`(?s)^.{m,}$`) would judge astral input differently per
342
+ * language. The astral vectors gate this: a port that counts code units
343
+ * fails conformance, not the tenant.
344
+ *
345
+ * Allowed: literals; `.`; anchors `^` `$`; alternation `|`; groups `(...)`,
346
+ * `(?:...)`; a WHOLE-PATTERN flag prefix over `i`/`m`/`s` (`(?i)` at position
347
+ * 0 only, each flag at most once — each port translates it to its host flag
348
+ * mechanism); quantifiers
349
+ * `*` `+` `?` `{m}` `{m,}` `{m,n}`; character classes with ranges and
350
+ * negation; escapes `\d \D \w \W \s \S \b \B \n \r \t \f \v \xHH`, escaped
351
+ * syntax punctuation (`\.` `\*` `\+` `\?` `\(` `\)` `\[` `\]` `\{` `\}`
352
+ * `\|` `\^` `\$` `\\` `\/`), and `\-` inside character classes.
353
+ *
354
+ * Rejected (divergent or unsafe across engines): lookahead/lookbehind, named
355
+ * groups, backreferences (`\1`…, `\k`), MID-pattern flag groups (`(?i:…)` —
356
+ * not portable to the JS and Python engines), a REPEATED flag in the prefix
357
+ * (`(?ii)` — the JS engine rejects it while the Go, Python and Rust engines
358
+ * accept it), `\p{…}`/`\P{…}` unicode
359
+ * property classes, POSIX classes (`[[:alpha:]]`), class intersection
360
+ * (`&&`), atomic groups, conditionals, comments, octal/`\u`/`\x{…}` escapes,
361
+ * escaped space (`\ `), `\-` outside a class, and a bare unescaped `{` that
362
+ * is not a quantifier (literal braces must be escaped — engines disagree on
363
+ * the lenient reading, so the subset requires the explicit form).
364
+ */
365
+ export function validateMatchesPattern(pattern) {
366
+ parseMatchesPattern(pattern);
367
+ }
368
+ /**
369
+ * THE definition of a valid `Matches` pattern: the single place that decides
370
+ * what the pinned subset accepts AND how a whole pattern decomposes into its
371
+ * flag prefix and body. {@link validateMatchesPattern} and `matchesPattern`
372
+ * both route through this, so a pattern the runtime evaluates is exactly a
373
+ * pattern the exported checker accepts — the two cannot drift apart, and a
374
+ * caller can pre-flight an authored pattern without reimplementing any part
375
+ * of the dialect.
376
+ *
377
+ * Every diagnostic quotes the WHOLE pattern the caller passed, never the
378
+ * flag-stripped body — an author must not be told about a pattern they did
379
+ * not write.
380
+ */
381
+ function parseMatchesPattern(pattern) {
382
+ const fail = (what) => {
383
+ throw new ExpressionError(`Matches pattern is outside the pinned regex subset (${what}): ${pattern}`);
384
+ };
385
+ // Whole-pattern flag prefix - position 0 only, over i/m/s, EACH AT MOST
386
+ // ONCE. The repeat rule is the subset's, not the host engine's: the JS
387
+ // engine rejects (?ii) at compile time while the Go, Python and Rust
388
+ // engines accept it, so the subset decides rather than the host.
389
+ let flags = '';
390
+ let body = pattern;
391
+ const prefix = /^\(\?([ims]+)\)/.exec(pattern);
392
+ if (prefix) {
393
+ flags = prefix[1];
394
+ if (new Set(flags).size !== flags.length)
395
+ fail(`repeated flag in prefix (?${flags})`);
396
+ body = pattern.slice(prefix[0].length);
397
+ }
398
+ // The u-legal intersection: character-class escapes, control escapes,
399
+ // \xHH, and escaped SYNTAX punctuation. `\-` is legal only INSIDE a class;
400
+ // `\ ` (escaped space) is not legal at all — both are Annex-B leniencies
401
+ // the code-point mode (and other engines) reject.
402
+ const ALLOWED_ESCAPES = new Set([
403
+ 'd', 'D', 'w', 'W', 's', 'S', 'b', 'B', 'n', 'r', 't', 'f', 'v',
404
+ '.', '*', '+', '?', '(', ')', '[', ']', '{', '}', '|', '^', '$', '\\', '/',
405
+ ]);
406
+ let inClass = false;
407
+ for (let i = 0; i < body.length; i++) {
408
+ const c = body[i];
409
+ if (c === '\\') {
410
+ const e = body[i + 1];
411
+ if (e === undefined)
412
+ fail('trailing backslash');
413
+ if (e === 'x') {
414
+ // \xHH only — \x{…} (RE2 long form) is not portable to the JS engine.
415
+ const hex = body.slice(i + 2, i + 4);
416
+ if (!/^[0-9a-fA-F]{2}$/.test(hex))
417
+ fail('\\x escape must be \\xHH');
418
+ if (body[i + 2] === '{')
419
+ fail('\\x{…} escape');
420
+ i += 3;
421
+ continue;
422
+ }
423
+ if (e >= '0' && e <= '9')
424
+ fail(`backreference or octal escape \\${e}`);
425
+ if (e === 'p' || e === 'P')
426
+ fail(`unicode property class \\${e}{…}`);
427
+ if (e === 'k')
428
+ fail('named backreference \\k');
429
+ if (e === 'u')
430
+ fail('\\u escape');
431
+ if (e === '-') {
432
+ if (!inClass)
433
+ fail('\\- outside a character class');
434
+ i++;
435
+ continue;
436
+ }
437
+ if ((e === 'b' || e === 'B') && inClass) {
438
+ // In-class \b is backspace in JS but an error in RE2-family engines —
439
+ // reject the divergent reading; word boundaries are outside-class only.
440
+ fail(`\\${e} inside a character class`);
441
+ }
442
+ if ((e === 'D' || e === 'W' || e === 'S') && inClass) {
443
+ // A negated shorthand inside a class is inexpressible as a textual
444
+ // fragment under the pinned ASCII expansion — reject rather than
445
+ // inherit each engine's own reading.
446
+ fail(`\\${e} inside a character class`);
447
+ }
448
+ if (!ALLOWED_ESCAPES.has(e))
449
+ fail(`escape \\${e}`);
450
+ i++;
451
+ continue;
452
+ }
453
+ if (inClass) {
454
+ if (c === ']') {
455
+ inClass = false;
456
+ continue;
457
+ }
458
+ if (c === '&' && body[i + 1] === '&')
459
+ fail('character-class intersection &&');
460
+ if (c === '[' && body[i + 1] === ':')
461
+ fail('POSIX class [[:…:]]');
462
+ continue;
463
+ }
464
+ if (c === '[') {
465
+ inClass = true;
466
+ continue;
467
+ }
468
+ if (c === '(' && body[i + 1] === '?') {
469
+ // Only (?: survives mid-pattern; the flag prefix (?ims) is legal at
470
+ // position 0 ONLY, and was already split off above — so any (? the
471
+ // scanner still sees is mid-pattern, including a SECOND prefix.
472
+ if (body[i + 2] !== ':')
473
+ fail(`group construct (?${body[i + 2] ?? ''}`);
474
+ i += 2; // resume after '?:'
475
+ continue;
476
+ }
477
+ if (c === '{') {
478
+ // A bare `{` must start a valid quantifier — engines disagree on the
479
+ // lenient literal reading, so the SCANNER enforces the rule uniformly
480
+ // (a literal brace is written \{), not each host's compile behavior.
481
+ if (!/^\{\d+(,\d*)?\}/.test(body.slice(i))) {
482
+ fail("bare '{' that is not a quantifier (write \\{)");
483
+ }
484
+ }
485
+ }
486
+ if (inClass)
487
+ fail('unterminated character class');
488
+ return { flags, body };
489
+ }
490
+ /**
491
+ * The pinned ASCII expansions of the shorthand classes — the dialect defines
492
+ * `\d` `\w` `\s` BY these expansions, and every port applies them textually
493
+ * before compiling, because the native shorthands diverge across exactly our
494
+ * targets (Rust/Python `\d` matches Arabic-Indic digits; JS `\s` matches
495
+ * NBSP; `\b` is Unicode in Rust/Python, ASCII in JS/RE2). Outside a class
496
+ * the shorthand becomes a bracketed class; inside a class it splices as a
497
+ * fragment. `\b`/`\B` stay as-written — ASCII word boundaries, native in
498
+ * this engine (Rust: `(?-u:\b)`; Python: `re.ASCII`).
499
+ */
500
+ const CLASS_EXPANSION_OUT = {
501
+ d: '[0-9]', D: '[^0-9]',
502
+ w: '[0-9A-Za-z_]', W: '[^0-9A-Za-z_]',
503
+ s: '[ \\t\\n\\r\\f\\x0B]', S: '[^ \\t\\n\\r\\f\\x0B]',
504
+ };
505
+ const CLASS_EXPANSION_IN = {
506
+ d: '0-9',
507
+ w: '0-9A-Za-z_',
508
+ s: ' \\t\\n\\r\\f\\x0B',
509
+ };
510
+ /** Apply the pinned ASCII expansions (subset-validated input, so every `\X`
511
+ * is a known escape and class boundaries are well-formed). Also pins the
512
+ * non-dotAll `.`: the dialect defines it as "any code point except \n" (the
513
+ * RE2/Python/Go norm) — THIS engine natively excludes \r/U+2028/U+2029 as
514
+ * well, so a non-dotAll `.` translates to `[^\n]`. Under `s`, every engine's
515
+ * dotAll means "everything" and `.` passes through. */
516
+ function expandShorthandClasses(body, dotAll) {
517
+ let out = '';
518
+ let inClass = false;
519
+ for (let i = 0; i < body.length; i++) {
520
+ const c = body[i];
521
+ if (c === '\\') {
522
+ const e = body[i + 1];
523
+ const table = inClass ? CLASS_EXPANSION_IN : CLASS_EXPANSION_OUT;
524
+ const expansion = table[e];
525
+ if (expansion !== undefined) {
526
+ out += expansion;
527
+ }
528
+ else {
529
+ out += c + e;
530
+ }
531
+ i++;
532
+ continue;
533
+ }
534
+ if (!inClass && c === '.' && !dotAll) {
535
+ out += '[^\\n]';
536
+ continue;
537
+ }
538
+ if (!inClass && c === '[')
539
+ inClass = true;
540
+ else if (inClass && c === ']')
541
+ inClass = false;
542
+ out += c;
543
+ }
544
+ return out;
545
+ }
546
+ /** Compile + test under fn:matches semantics: UNANCHORED (substring) — authors
547
+ * write `^…$` for a whole-string match. The flag prefix splits off first
548
+ * (translated to host RegExp flags), then the body is subset-validated, so
549
+ * the host engine only ever sees portable constructs. Always compiled with
550
+ * `u` — the pinned CODE-POINT counting unit (an astral character is one `.`;
551
+ * `.{m,n}` counts code points, matching RE2/Python and SHACL string length).
552
+ * `u` also rejects a bare literal `{`, turning an engine-divergent lenient
553
+ * reading into the subset's loud error. */
554
+ function matchesPattern(input, pattern) {
555
+ const { flags, body } = parseMatchesPattern(pattern);
556
+ let re;
557
+ try {
558
+ re = new RegExp(expandShorthandClasses(body, flags.includes('s')), flags + 'u');
559
+ }
560
+ catch {
561
+ throw new ExpressionError(`Matches pattern does not compile: ${pattern}`);
562
+ }
563
+ return re.test(input);
564
+ }
565
+ // ---------------------------------------------------------------------------
566
+ // Ordered comparisons (unchanged from v1).
567
+ // ---------------------------------------------------------------------------
130
568
  /**
131
569
  * The identity an ordered comparison compares — a member's canonical
132
570
  * versionless URI. `tx.UriLiteral` is the kernel-known constant leaf (its
@@ -175,26 +613,54 @@ function foldOrdered(node, ctx, options) {
175
613
  : bool((closure[left] ?? []).includes(right));
176
614
  return { value, left, right };
177
615
  }
616
+ /** Innermost-wins lookup of a lambda-bound variable. */
617
+ function boundValue(frames, name) {
618
+ for (let i = frames.length - 1; i >= 0; i--) {
619
+ if (frames[i].name === name)
620
+ return frames[i].value;
621
+ }
622
+ return undefined;
623
+ }
178
624
  /**
179
- * Evaluate an expression tree to a number. Operators fold via the frozen
180
- * dispatch + primitive tables; literals yield their numeric value; any other
181
- * node is delegated to `resolve`. `options` carries the ordered-comparison
182
- * context (closures + identity-leaf resolution) and is only consulted when an
625
+ * Evaluate an expression tree to a value. Operators fold via the frozen
626
+ * dispatch + primitive tables; literals yield their value; any other node is
627
+ * delegated to `resolve`. `options` carries the ordered-comparison context
628
+ * (closures + identity-leaf resolution) and is only consulted when an
183
629
  * `IsAtLeast` / `Dominates` node is reached.
184
630
  */
185
631
  export function evaluate(node, ctx, resolve, options) {
186
- const recurse = (n, c) => evaluate(n, c, resolve, options);
632
+ return evalNode(node, ctx, resolve, options, []);
633
+ }
634
+ /** `source` operand evaluated as a list: a scalar promotes to a one-element
635
+ * list (the reference-engine rule); an empty list is absence. */
636
+ function evalSourceList(node, ctx, resolve, options, frames) {
637
+ const v = evalNode(operand(node, 'source'), ctx, resolve, options, frames);
638
+ return Array.isArray(v) ? v : [v];
639
+ }
640
+ function evalNode(node, ctx, resolve, options, frames) {
641
+ const recurse = (n, c) => evalNode(n, c, resolve, options, frames);
642
+ const recurseNumber = (n, c, op) => requireNumber(recurse(n, c), op);
187
643
  const arity = OPERATOR_ARITY[node.type];
188
644
  if (arity) {
189
645
  switch (arity.kind) {
190
646
  case 'unary': {
191
- const x = recurse(operand(node, arity.operand), ctx);
647
+ const x = recurseNumber(operand(node, arity.operand), ctx, node.type);
192
648
  return UNARY[node.type](x);
193
649
  }
194
650
  case 'binary': {
195
651
  const a = recurse(operand(node, arity.left), ctx);
196
652
  const b = recurse(operand(node, arity.right), ctx);
197
- return BINARY[node.type](a, b);
653
+ if (node.type === `${TX}/Equals`)
654
+ return bool(valuesEqual(a, b));
655
+ const order = BINARY_ORDER[node.type];
656
+ if (order) {
657
+ // Predicate: non-numeric operands fail CLOSED.
658
+ if (typeof a !== 'number' || typeof b !== 'number')
659
+ return 0;
660
+ return order(a, b);
661
+ }
662
+ // Arithmetic: computation — fail LOUD on non-numbers.
663
+ return BINARY_ARITH[node.type](requireNumber(a, node.type), requireNumber(b, node.type));
198
664
  }
199
665
  case 'nary': {
200
666
  const items = node[arity.operands];
@@ -203,7 +669,7 @@ export function evaluate(node, ctx, resolve, options) {
203
669
  const isAnd = node.type === `${TX}/And`;
204
670
  // Short-circuit; empty And is vacuously true, empty Or vacuously false.
205
671
  for (const item of items) {
206
- const v = truthy(recurse(item, ctx));
672
+ const v = truthy(requireNumber(recurse(item, ctx), node.type));
207
673
  if (isAnd && !v)
208
674
  return 0;
209
675
  if (!isAnd && v)
@@ -213,28 +679,104 @@ export function evaluate(node, ctx, resolve, options) {
213
679
  }
214
680
  case 'ternary': {
215
681
  // Only Clip today: clamp clipValue into [clipLower, clipUpper].
216
- const v = recurse(operand(node, arity.a), ctx);
217
- const lo = recurse(operand(node, arity.b), ctx);
218
- const hi = recurse(operand(node, arity.c), ctx);
682
+ const v = recurseNumber(operand(node, arity.a), ctx, node.type);
683
+ const lo = recurseNumber(operand(node, arity.b), ctx, node.type);
684
+ const hi = recurseNumber(operand(node, arity.c), ctx, node.type);
219
685
  return Math.min(Math.max(v, lo), hi);
220
686
  }
221
687
  }
222
688
  }
223
689
  if (node.type === `${TX}/Not`) {
224
- return bool(!truthy(recurse(operand(node, 'operand'), ctx)));
690
+ return bool(!truthy(requireNumber(recurse(operand(node, 'operand'), ctx), node.type)));
225
691
  }
226
692
  if (node.type === `${TX}/IsAtLeast` || node.type === `${TX}/Dominates`) {
227
693
  return foldOrdered(node, ctx, options).value;
228
694
  }
695
+ const listFold = LIST_FOLDS[node.type];
696
+ if (listFold) {
697
+ return listFold(evalSourceList(node, ctx, resolve, options, frames), node);
698
+ }
699
+ const body = ITERATOR_BODY[node.type];
700
+ if (body) {
701
+ const loopVar = node.loopVar;
702
+ if (typeof loopVar !== 'string' || loopVar.length === 0) {
703
+ throw new ExpressionError(`${node.type} is missing loopVar`);
704
+ }
705
+ const list = evalSourceList(node, ctx, resolve, options, frames);
706
+ const bodyNode = operand(node, body);
707
+ const out = [];
708
+ for (const el of list) {
709
+ const inner = [...frames, { name: loopVar, value: el }];
710
+ const v = evalNode(bodyNode, ctx, resolve, options, inner);
711
+ if (node.type === `${TX}/Filter`) {
712
+ if (truthy(requireNumber(v, 'Filter predicate')))
713
+ out.push(el);
714
+ }
715
+ else if (node.type === `${TX}/ForEach`) {
716
+ // Flatten one level; an empty list contributes nothing — which is
717
+ // exactly the absence rule doing the reference engine's skip.
718
+ if (Array.isArray(v))
719
+ out.push(...v);
720
+ else
721
+ out.push(v);
722
+ }
723
+ else {
724
+ out.push(v);
725
+ }
726
+ }
727
+ return out;
728
+ }
729
+ if (node.type === `${TX}/Contains`) {
730
+ const haystack = evalNode(operand(node, 'haystack'), ctx, resolve, options, frames);
731
+ const needle = evalNode(operand(node, 'needle'), ctx, resolve, options, frames);
732
+ const list = Array.isArray(haystack) ? haystack : [haystack];
733
+ return bool(list.some((el) => valuesEqual(el, needle)));
734
+ }
735
+ if (node.type === `${TX}/IsSet`) {
736
+ return bool(isSet(evalNode(operand(node, 'checkExpr'), ctx, resolve, options, frames)));
737
+ }
738
+ if (node.type === `${TX}/ListItemAt`) {
739
+ const list = evalSourceList(node, ctx, resolve, options, frames);
740
+ const idx = evalNode(operand(node, 'itemIndex'), ctx, resolve, options, frames);
741
+ if (typeof idx !== 'number' || !Number.isInteger(idx) || idx < 0) {
742
+ throw new ExpressionError('ListItemAt itemIndex must be a non-negative integer');
743
+ }
744
+ // Past the end is ABSENCE, not an error — the empty list; guard with IsSet.
745
+ return idx < list.length ? list[idx] : [];
746
+ }
747
+ if (node.type === `${TX}/Matches`) {
748
+ const src = evalNode(operand(node, 'matchSource'), ctx, resolve, options, frames);
749
+ if (typeof src !== 'string') {
750
+ throw new ExpressionError(`Matches requires a string matchSource, got ${kindOf(src)}`);
751
+ }
752
+ const pattern = node.pattern;
753
+ if (typeof pattern !== 'string')
754
+ throw new ExpressionError('Matches is missing pattern');
755
+ return bool(matchesPattern(src, pattern));
756
+ }
757
+ const kind = KIND_PREDICATES[node.type];
758
+ if (kind) {
759
+ return bool(kind(evalNode(operand(node, 'kindCheck'), ctx, resolve, options, frames)));
760
+ }
229
761
  const lit = literalValue(node);
230
762
  if (lit !== undefined)
231
763
  return lit;
232
- // Not an operator or literal — a binding or domain leaf. The caller owns it.
233
- return resolve(node, ctx, recurse);
764
+ // A VarRef naming a lexically-enclosing loopVar is the kernel's own bound
765
+ // variable — the ONLY leaf the kernel answers (see the header). Any other
766
+ // VarRef, and every other leaf, is the caller's.
767
+ if (node.type === `${TX}/VarRef` && typeof node.varName === 'string') {
768
+ const bound = boundValue(frames, node.varName);
769
+ if (bound !== undefined)
770
+ return bound;
771
+ }
772
+ // Not an operator or literal — a binding, graph read, or domain leaf. The
773
+ // caller owns it. (Recursion from inside `resolve` re-enters WITHOUT lambda
774
+ // frames: the caller's subtrees are the caller's scope.)
775
+ return resolve(node, ctx, (n, c) => evalNode(n, c, resolve, options, []));
234
776
  }
235
777
  function operand(node, key) {
236
778
  const v = node[key];
237
- if (v === null || v === undefined || typeof v !== 'object') {
779
+ if (v === null || v === undefined || typeof v !== 'object' || Array.isArray(v)) {
238
780
  throw new ExpressionError(`${node.type} is missing operand '${key}'`);
239
781
  }
240
782
  return v;
@@ -252,22 +794,38 @@ function operand(node, key) {
252
794
  * error, not a partial trace.
253
795
  */
254
796
  export function explain(node, ctx, resolve, options) {
255
- // Numeric recursion for subtrees the caller's `resolve` re-enters: those
797
+ // Value recursion for subtrees the caller's `resolve` re-enters: those
256
798
  // folds happen inside the caller and are invisible to the trace, exactly
257
799
  // like the caller's own computation. Only kernel-visited nodes appear.
258
- const recurseValue = (n, c) => evaluate(n, c, resolve, options);
259
- const trace = (n, c) => {
800
+ const recurseValue = (n, c) => evalNode(n, c, resolve, options, []);
801
+ const trace = (n, c, frames) => {
802
+ const leaf = (value) => ({ type: n.type, value, children: [] });
260
803
  const arity = OPERATOR_ARITY[n.type];
261
804
  if (arity) {
262
805
  switch (arity.kind) {
263
806
  case 'unary': {
264
- const x = trace(operand(n, arity.operand), c);
265
- return { type: n.type, value: UNARY[n.type](x.value), children: [x] };
807
+ const x = trace(operand(n, arity.operand), c, frames);
808
+ return { type: n.type, value: UNARY[n.type](requireNumber(x.value, n.type)), children: [x] };
266
809
  }
267
810
  case 'binary': {
268
- const a = trace(operand(n, arity.left), c);
269
- const b = trace(operand(n, arity.right), c);
270
- return { type: n.type, value: BINARY[n.type](a.value, b.value), children: [a, b] };
811
+ const a = trace(operand(n, arity.left), c, frames);
812
+ const b = trace(operand(n, arity.right), c, frames);
813
+ let value;
814
+ if (n.type === `${TX}/Equals`) {
815
+ value = bool(valuesEqual(a.value, b.value));
816
+ }
817
+ else {
818
+ const order = BINARY_ORDER[n.type];
819
+ if (order) {
820
+ value = typeof a.value !== 'number' || typeof b.value !== 'number'
821
+ ? 0
822
+ : order(a.value, b.value);
823
+ }
824
+ else {
825
+ value = BINARY_ARITH[n.type](requireNumber(a.value, n.type), requireNumber(b.value, n.type));
826
+ }
827
+ }
828
+ return { type: n.type, value, children: [a, b] };
271
829
  }
272
830
  case 'nary': {
273
831
  const items = n[arity.operands];
@@ -276,9 +834,9 @@ export function explain(node, ctx, resolve, options) {
276
834
  const isAnd = n.type === `${TX}/And`;
277
835
  const children = [];
278
836
  for (const item of items) {
279
- const child = trace(item, c);
837
+ const child = trace(item, c, frames);
280
838
  children.push(child);
281
- const v = truthy(child.value);
839
+ const v = truthy(requireNumber(child.value, n.type));
282
840
  // Same short-circuit as `evaluate`: operands after the deciding
283
841
  // one are never evaluated and never appear in the trace.
284
842
  if (isAnd && !v)
@@ -289,30 +847,112 @@ export function explain(node, ctx, resolve, options) {
289
847
  return { type: n.type, value: bool(isAnd), children };
290
848
  }
291
849
  case 'ternary': {
292
- const v = trace(operand(n, arity.a), c);
293
- const lo = trace(operand(n, arity.b), c);
294
- const hi = trace(operand(n, arity.c), c);
850
+ const v = trace(operand(n, arity.a), c, frames);
851
+ const lo = trace(operand(n, arity.b), c, frames);
852
+ const hi = trace(operand(n, arity.c), c, frames);
295
853
  return {
296
854
  type: n.type,
297
- value: Math.min(Math.max(v.value, lo.value), hi.value),
855
+ value: Math.min(Math.max(requireNumber(v.value, n.type), requireNumber(lo.value, n.type)), requireNumber(hi.value, n.type)),
298
856
  children: [v, lo, hi],
299
857
  };
300
858
  }
301
859
  }
302
860
  }
303
861
  if (n.type === `${TX}/Not`) {
304
- const x = trace(operand(n, 'operand'), c);
305
- return { type: n.type, value: bool(!truthy(x.value)), children: [x] };
862
+ const x = trace(operand(n, 'operand'), c, frames);
863
+ return { type: n.type, value: bool(!truthy(requireNumber(x.value, n.type))), children: [x] };
306
864
  }
307
865
  if (n.type === `${TX}/IsAtLeast` || n.type === `${TX}/Dominates`) {
308
866
  const r = foldOrdered(n, c, options);
309
867
  return { type: n.type, value: r.value, children: [], leftRef: r.left, rightRef: r.right };
310
868
  }
869
+ const listFold = LIST_FOLDS[n.type];
870
+ if (listFold) {
871
+ const src = trace(operand(n, 'source'), c, frames);
872
+ const list = Array.isArray(src.value) ? src.value : [src.value];
873
+ return { type: n.type, value: listFold(list, n), children: [src] };
874
+ }
875
+ const body = ITERATOR_BODY[n.type];
876
+ if (body) {
877
+ const loopVar = n.loopVar;
878
+ if (typeof loopVar !== 'string' || loopVar.length === 0) {
879
+ throw new ExpressionError(`${n.type} is missing loopVar`);
880
+ }
881
+ const src = trace(operand(n, 'source'), c, frames);
882
+ const list = Array.isArray(src.value) ? src.value : [src.value];
883
+ const bodyNode = operand(n, body);
884
+ const children = [src];
885
+ const out = [];
886
+ for (const el of list) {
887
+ const inner = [...frames, { name: loopVar, value: el }];
888
+ const bodyTrace = trace(bodyNode, c, inner);
889
+ children.push(bodyTrace);
890
+ const v = bodyTrace.value;
891
+ if (n.type === `${TX}/Filter`) {
892
+ if (truthy(requireNumber(v, 'Filter predicate')))
893
+ out.push(el);
894
+ }
895
+ else if (n.type === `${TX}/ForEach`) {
896
+ if (Array.isArray(v))
897
+ out.push(...v);
898
+ else
899
+ out.push(v);
900
+ }
901
+ else {
902
+ out.push(v);
903
+ }
904
+ }
905
+ return { type: n.type, value: out, children };
906
+ }
907
+ if (n.type === `${TX}/Contains`) {
908
+ const hay = trace(operand(n, 'haystack'), c, frames);
909
+ const needle = trace(operand(n, 'needle'), c, frames);
910
+ const list = Array.isArray(hay.value) ? hay.value : [hay.value];
911
+ return {
912
+ type: n.type,
913
+ value: bool(list.some((el) => valuesEqual(el, needle.value))),
914
+ children: [hay, needle],
915
+ };
916
+ }
917
+ if (n.type === `${TX}/IsSet`) {
918
+ const x = trace(operand(n, 'checkExpr'), c, frames);
919
+ return { type: n.type, value: bool(isSet(x.value)), children: [x] };
920
+ }
921
+ if (n.type === `${TX}/ListItemAt`) {
922
+ const src = trace(operand(n, 'source'), c, frames);
923
+ const idx = trace(operand(n, 'itemIndex'), c, frames);
924
+ const list = Array.isArray(src.value) ? src.value : [src.value];
925
+ if (typeof idx.value !== 'number' || !Number.isInteger(idx.value) || idx.value < 0) {
926
+ throw new ExpressionError('ListItemAt itemIndex must be a non-negative integer');
927
+ }
928
+ const value = idx.value < list.length ? list[idx.value] : [];
929
+ return { type: n.type, value, children: [src, idx] };
930
+ }
931
+ if (n.type === `${TX}/Matches`) {
932
+ const src = trace(operand(n, 'matchSource'), c, frames);
933
+ if (typeof src.value !== 'string') {
934
+ throw new ExpressionError(`Matches requires a string matchSource, got ${kindOf(src.value)}`);
935
+ }
936
+ const pattern = n.pattern;
937
+ if (typeof pattern !== 'string')
938
+ throw new ExpressionError('Matches is missing pattern');
939
+ return { type: n.type, value: bool(matchesPattern(src.value, pattern)), children: [src] };
940
+ }
941
+ const kind = KIND_PREDICATES[n.type];
942
+ if (kind) {
943
+ const x = trace(operand(n, 'kindCheck'), c, frames);
944
+ return { type: n.type, value: bool(kind(x.value)), children: [x] };
945
+ }
311
946
  const lit = literalValue(n);
312
947
  if (lit !== undefined)
313
- return { type: n.type, value: lit, children: [] };
314
- return { type: n.type, value: resolve(n, c, recurseValue), children: [] };
948
+ return leaf(lit);
949
+ if (n.type === `${TX}/VarRef` && typeof n.varName === 'string') {
950
+ const bound = boundValue(frames, n.varName);
951
+ if (bound !== undefined)
952
+ return leaf(bound);
953
+ }
954
+ return leaf(resolve(n, c, recurseValue));
315
955
  };
316
- return trace(node, ctx);
956
+ return trace(node, ctx, []);
317
957
  }
318
958
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kanonak-protocol/expression",
3
- "version": "0.2.0",
4
- "description": "The Kanonak expression runtime (expressionRuntimeVersion \"1\") — a deterministic tree-walker that folds a kanonak.org/transformations + kanonak.org/math expression to a number, verified against the shared parity vectors. The behavior every generated SDK evaluates through.",
3
+ "version": "0.3.1",
4
+ "description": "The Kanonak expression runtime (expressionRuntimeVersion \"2\") — a deterministic tree-walker that folds a kanonak.org/transformations + kanonak.org/math expression to a value (number | string | ref | list), verified against the shared parity vectors. The behavior every generated SDK evaluates through.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://kanonak.org",
7
7
  "author": "Kanonak Maintainers (https://github.com/kanonak-protocol/runtime)",