canonical_id: "number_ops"
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: [operation, input]
  properties:
    operation:
      type: string
      enum: [round, floor, ceil, abs, add, subtract, multiply, divide, mod, min, max, format]
    input:
      type: number
    args:
      type: object
      properties:
        value:
          type: number
        decimals:
          type: number
output_schema:
  type: object
  properties:
    success:
      type: boolean
    data:
      type: object
      properties:
        result: {}
        operation:
          type: string
gherkin_tests:
  - scenario: "round 操作"
    given: '{"operation":"round","input":3.14}'
    then_contains: '"result":3'
  - scenario: "add 操作"
    given: '{"operation":"add","input":10,"args":{"value":5}}'
    then_contains: '"result":15'
  - scenario: "除以零"
    given: '{"operation":"divide","input":10,"args":{"value":0}}'
    then_contains: '{"success":false'
tags: [builtin, data, number, math, transform]
description: "數字操作：round/floor/ceil/abs/add/subtract/multiply/divide/mod/min/max/format。"
config_example: |
  my_number_op:                           # 節點名稱（可自訂）
    operation: "add"                      # 運算類型（必填），可選值：round/floor/ceil/abs/add/subtract/multiply/divide/mod/min/max/format
    input: 10                             # 輸入數字（必填）
    args:                                 # 操作參數，依 operation 而定（選填）
      value: 5                            # add/subtract/multiply/divide/mod/min/max 用：第二個運算元
      decimals: 2                         # round/format 用：小數位數
