You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(ambient-agents): Add webhook trigger UI on start node, handles in both canvas, agentflow is out of scope but shows temporary ui
* fix: resolve webhookURL copy button not appearing after first save
useParams() does not update when window.history.replaceState() is used
on first save (bypasses React Router). Fall back to Redux canvas.chatflow.id
so NodeInputHandler re-renders reactively when SET_CHATFLOW is dispatched.
* feat(webhooks): add headers, query params & body validation to webhook trigger
- Add webhookTrigger input type to Start node with HTTP method, content
type, and expected headers/query/body param configuration
- New /api/v1/webhook/:id route with method, content-type, header, body,
and query param validation (400/405/415 on mismatch)
- Namespace webhook payload as $webhook.body.*, $webhook.headers.*,
$webhook.query.* in the flow runtime
- Resolve $webhook.* variables in downstream nodes via buildAgentflow.ts
- Auto-unwrap form-encoded `payload` JSON strings (e.g. GitHub webhooks)
so $webhook.body.* paths work regardless of content type
- Expose webhook variable suggestions in the node variable picker
- Show copyable webhook URL in the Start node canvas UI
* fixed a bug where downstream nodes cant reference values via node id, and a lowercase headers issue
Copy file name to clipboardExpand all lines: packages/components/nodes/agentflow/Start/Start.ts
+85-2Lines changed: 85 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -132,16 +132,71 @@ class Start_Agentflow implements INode {
132
132
}
133
133
]
134
134
},
135
+
{
136
+
label: 'HTTP Method',
137
+
name: 'webhookMethod',
138
+
type: 'options',
139
+
options: [
140
+
{label: 'GET',name: 'GET'},
141
+
{label: 'POST',name: 'POST'},
142
+
{label: 'PUT',name: 'PUT'},
143
+
{label: 'PATCH',name: 'PATCH'},
144
+
{label: 'DELETE',name: 'DELETE'}
145
+
],
146
+
default: 'POST',
147
+
show: {
148
+
startInputType: 'webhookTrigger'
149
+
}
150
+
},
151
+
{
152
+
label: 'Content Type',
153
+
name: 'webhookContentType',
154
+
type: 'options',
155
+
description:
156
+
'Expected Content-Type of incoming requests. For application/x-www-form-urlencoded, if the entire payload is a JSON string in a "payload" field (e.g. GitHub webhooks), it is automatically parsed — use $webhook.body.* as normal.',
0 commit comments