canonical_id: "foreach_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: [items]
  properties:
    items:
      type: array
      description: 要迭代的陣列
    item_key:
      type: string
      description: 每個元素注入的變數名，預設 item
output_schema:
  type: object
  properties:
    success:
      type: boolean
    data:
      type: object
      properties:
        items:
          type: array
        count:
          type: number
        current_index:
          type: number
        current_item: {}
        item_key:
          type: string
gherkin_tests:
  - scenario: "正常迭代"
    given: '{"items":[1,2,3],"item_key":"item"}'
    then_contains: '"current_index":0'
  - scenario: "空陣列"
    given: '{"items":[]}'
    then_contains: '{"success":false'
tags: [builtin, control, foreach, loop, iteration]
description: "輸出第一個元素供 Cypher Executor 迭代，current_index 從 0 開始。"
config_example: |
  my_loop:                         # 節點名稱（可自訂）
    items: "{{upstream.results}}"  # 要迭代的陣列（必填）
    item_key: item                 # 每個元素注入的變數名，預設 item（選填）
