Skip to content

Latest commit

 

History

History
87 lines (63 loc) · 2.21 KB

File metadata and controls

87 lines (63 loc) · 2.21 KB

Safe Expression (expressionNode)

Category: Math & Compare

Intended behavior

Evaluates a safe mathematical/logical expression.

Inputs

ID Label Type Unwired default
x X number 1
y Y number 1
enabled Enabled boolean true

Outputs

ID Label Type Default
out Result any undefined

Configuration defaults

{
  "expression": "x * 2 + y"
}

Observed frontend behavior

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": 3
  }
}

Observed backend behavior

Offline production passive computation with the same declared defaults; no device or model service is invoked.

{
  "kind": "passive-default-probe",
  "outputs": {
    "out": 3
  }
}

Current frontend implementation

Extracted production branches; helper calls and project execution context are defined in the referenced modules.

src/lib/execution-helpers.ts:165

case "expressionNode": {
      const expr = config.expression ?? "x * 2 + y";
      // Ports display as X/Y on the node but are named x/y — accept either case.
      const exprCtx: Record<string, any> = {};
      for (const key of Object.keys(inputs)) {
        exprCtx[key] = inputs[key];
        exprCtx[key.toUpperCase()] = inputs[key];
      }
      outputs.out = safeEvaluate(expr, exprCtx);
      break;
    }

Implementation references

Verification limits

  • 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.