Repository navigation
v1.0.0 — trigger → inputs (breaking)
Breaking changes
ClawFlow 1.0.0 removes the trigger concept from the flow format. Flows are now trigger-agnostic — the Clawnify platform resolves webhooks, cron, and manual triggers externally and passes a generic inputs payload.
What changed
FlowDefinition.triggerremoved → replaced by optionalinputs: Record<string, InputSpec>declaration block{{ trigger.X }}→{{ inputs.X }}in all templatesFlowState.trigger→FlowState.inputs- HTTP server:
startWebhookServer/WebhookServerOpts→startFlowServer/FlowServerOpts; endpoint/:flowName/webhook→/:flowName/run FlowTriggertype removed →InputSpectype added- Plugin tool
flow_create:triggerparam →inputsparam
Input validation
Declare inputs with required: true and they are validated at flow start (fail-fast before any node runs). Undeclared keys pass through silently. No declaration = anything-goes mode.
{
"flow": "my-flow",
"inputs": {
"body": { "type": "string", "required": true },
"id": { "type": "string", "required": true }
},
"nodes": [...]
}Migrating from 0.x
npx @clawnify/clawflow migrate <flows-dir> --dry # preview
npx @clawnify/clawflow migrate <flows-dir> # apply
The script rewrites flow files in-place: drops trigger: blocks, rewrites all {{ trigger.X }} templates, bare paths, and condition expressions.