Quester Studio

form

Mid-flow wait for structured form fields (desktop UI or CLI --forms)

Pauses the run until a workspace form is filled and submitted. Output is the submitted field object ({{nodes.<id>.fieldId}}). A flow may include multiple form nodes (e.g. search → pick → confirm).

Unlike input, forms are interactive mid-flow wait points. Field defaults and select options can resolve from prior node outputs.

Author forms under forms/*.form.json — see Workspace files.

in form await out Pauses until Submit (desktop) or --forms (CLI)
Pauses until submit (desktop UI or CLI --forms). Output is the submitted field object.

Data

FieldTypeDescription
formIdstringWorkspace form id (forms/{formId}.form.json)
labelstringOptional UI label
bindingsobjectOptional map of form input id → value/template (resolved before field defaults; available as {{form.*}} inside the form)
valueobjectOptional draft / prefill overrides (field id → value; strings may be templates)

Reusable inputs and bindings

Forms may declare inputs (reusable parameters) separate from visible fields. Each flow’s form node binds those inputs via bindings so the same form file works in different flows:

{
  "id": "pickForm",
  "type": "form",
  "data": {
    "formId": "pick-product",
    "bindings": {
      "products": "{{nodes.search.body.products}}"
    }
  }
}

Inside the form definition, reference bound values with {{form.products}} in field defaults or optionsFrom.items. After submit, read answers with {{nodes.pickForm.productId}}.

Desktop vs CLI

HostBehavior
DesktopShows resolved fields; Submit resumes; Stop cancels
CLI--forms <file.json> map keyed by form node id; missing key fails the node
quester run search-pick-cart --workspace . --env local \
  --forms ./forms/search-pick-cart.forms.json
  • Workspace forms
  • input — initial run payload (not mid-flow wait)
  • Sample: examples/sample-workspace/flows/search-pick-cart.flow.json
  • Full tour: examples/sample-workspace/flows/forms-showcase.flow.json (all field types + multi-form await)