canonical_id: "if_control"
display_name: "條件判斷"
category: "logic"
version: "v1"
wasi_target: "preview1"
stability: "floating"
runtime_compat:
  - "cf-workers"
  - "workerd"
  - "wazero"
constraints:
  max_size_kb: 2048
  max_cold_start_ms: 50
  no_network_syscall: true
  no_filesystem_syscall: true
  io_model: "stdin_stdout_json"
input_schema:
  type: object
  required: [condition]
  properties:
    condition:
      type: string
      description: 條件運算式，支援 key（truthy）、key == value、key > number、key < number
    input:
      type: object
      description: 條件運算式中參照的變數字典
output_schema:
  type: object
  properties:
    success:
      type: boolean
    data:
      type: object
      properties:
        result:
          type: boolean
        branch:
          type: string
          enum: ["true", "false"]
gherkin_tests:
  - scenario: "條件成立走 true 分支"
    given: '{"condition":"status == active","input":{"status":"active"}}'
    then_contains: '"branch":"true"'
  - scenario: "條件不成立走 false 分支"
    given: '{"condition":"status == active","input":{"status":"inactive"}}'
    then_contains: '"branch":"false"'
  - scenario: "缺少 condition"
    given: '{"input":{"status":"active"}}'
    then_contains: '{"success":false'
tags: [builtin, control, if, condition, branch]
description: "評估條件運算式，依結果路由到 true 或 false 分支。"
config_example: |
  my_if:                                    # 節點名稱（可自訂）
    condition: "status == active"           # 條件運算式（必填）
    input:                                  # 條件運算式中參照的變數字典（選填）
      status: "{{upstream.status}}"
