canonical_id: "wait"
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: [ms]
  properties:
    ms:
      type: integer
      description: 等待毫秒數，最大 30000（30 秒）
    context:
      type: object
      description: 透傳到下一個節點的上下文資料
output_schema:
  type: object
  properties:
    success:
      type: boolean
    data:
      type: object
      description: 透傳的 context 加上 waited_ms 欄位
      properties:
        waited_ms:
          type: integer
gherkin_tests:
  - scenario: "等待 100ms"
    given: '{"ms":100}'
    then_contains: '"waited_ms":100'
  - scenario: "超過上限自動截斷為 30000ms"
    given: '{"ms":99999}'
    then_contains: '"waited_ms":30000'
  - scenario: "ms 為 0 時失敗"
    given: '{"ms":0}'
    then_contains: '{"success":false'
tags: [builtin, wait, delay, sleep, timing]
description: "等待指定毫秒數後繼續，最長 30 秒，並透傳 context 資料。"
config_example: |
  my_wait:                           # 節點名稱（可自訂）
    ms: 1000                         # 等待毫秒數，最大 30000（必填）
    context:                         # 透傳到下一個節點的資料（選填）
      payload: "{{upstream.data}}"
