Category: Math & Compare
Free-form formula over auto-growing lettered inputs (a, b, c…). Numbers compute, strings concatenate.
| ID | Label | Type | Unwired default |
|---|---|---|---|
a |
A | any | 1 |
b |
B | any | 1 |
enabled |
Enabled | boolean | true |
| ID | Label | Type | Default |
|---|---|---|---|
out |
Result | any | undefined |
{
"expression": "a + b",
"dynamicInputs": true
}This calls the production passive computation with the declared input/config defaults. Cached state, trigger execution and project wiring are separate.
{
"kind": "passive-default-probe",
"outputs": {
"out": 2
}
}Offline production passive computation with the same declared defaults; no device or model service is invoked.
{
"kind": "passive-default-probe",
"outputs": {
"out": 2
}
}Extracted production branches; helper calls and project execution context are defined in the referenced modules.
src/lib/execution-helpers.ts:176
case "mathNode": {
const expr = config.expression ?? "a + b";
const ctx: Record<string, any> = {};
// Ports are named a/b/c… but display as A/B/C on the node — accept
// either case in the formula so typing what you see on the node works.
for (const key of Object.keys(inputs)) {
const val = coerceOperand(inputs[key]);
ctx[key] = val;
ctx[key.toUpperCase()] = val;
}
outputs.out = safeEvaluate(expr, ctx);
break;
}- Default passive probe is an observation, not proof of all configurations, trigger behavior, or correctness. See ../NODE_RUNTIME_AUDIT.md and ../AUDIT_VALIDATION.md for test evidence.
- Enabled=false uses the runtime bypass mapping; bypass output can differ from the normal declared output type.
Source fingerprint: 7e9d192bd3a559a7c50253919867601ef02c311d61e859f7afb4cadcfa508430. Rebuild with npm run docs:index.