# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.

packages:
  hello_world_package:
    version: 1.0
    license: Apache-2.0
    actions:
      hello_world_triggerrule:
        function: src/hello_plus.js
        inputs:
          name: string
          place: string
          children: integer
          height: float
        outputs:
          greeting: string
          details: string

    triggers:
      meetPerson:
        inputs:
          name: string
          place: string
          children: integer
          height: float

    rules:
      meetPersonRule:
        trigger: meetPerson
        action: hello_world_triggerrule
