servflowai resource handler describe --all prints the same catalog. For what entries are and how to choose one, see Entries and entry handlers.
The keys every entry shares,
type and start, and the rules for an agent with several entries are in the CLI reference.
Entries without a handler
Trigger
Starts the agent on a schedule, by hand from the editor, or when another agent hands it a task.Webhook
AnswersPOST requests on its path. Nothing about the request is checked in advance. Prompts read the request with the body, param, header, and urlparam functions. See the Dynamic content reference.
Every response carries an
X-Conversation-Id header naming the conversation the run used. A request that sends the same header continues that conversation. A request without it starts a new one. When a request is refused with 429, that same header still names the conversation it would have continued.
Set the limit on the agent itself:
0 means no limit, which is the default. The limit applies only to runs that continue a conversation, so a test run or any run with no conversation id is not counted.
streamable_http_webhook
AnswersPOST requests on its path the same way as a webhook entry, but as a stream of Server-Sent Events instead of one response at the end. Use it when your application should receive the agent’s messages as they are written. Prompts read the request with the same body, param, header, and urlparam functions.
The stream opens only when the run adds its first message. A refusal before that still comes back as an ordinary HTTP response. Once the stream is open, ServFlow sends keepalive comments so idle proxies do not cut the connection.
Like a webhook, the response carries an
X-Conversation-Id header naming the conversation the run used. Send the same header on the next request to continue that conversation.
Entry handlers
An entry handler receives from one outside service and delivers the agent’s reply to it. A prompt reads a handler’s variables as{{ .<namespace>.<key> }}, such as {{ .github.comment_body }}.
A handler’s settings are read once, when the agent loads. The only template function they accept is secret.
github_webhook
Runs on a delivery from a GitHub App: an issue or pull request comment, a review comment, a new pull request, a push. Whenrespond_to says so, the agent’s answer is posted on the pull request or issue that started the run.
Namespace: github. Needs a path. Integration type: github_app.
A delivery is answered 202 at once, and the run continues after the response. Each delivery runs in a conversation of its own. A delivery that the settings filter out, or that comes from an installation other than the integration’s, is answered 202 with {"status":"ignored"} and starts no run.
Settings
In a config file
gitea_webhook
Runs on a delivery from a Gitea server: an issue or pull request comment, a new pull request, a push. Receiving needs only the secret the webhook was created with in Gitea. Whenrespond_to says so, the agent’s answer is posted on the pull request or issue that started the run, which needs an integration.
Namespace: gitea. Needs a path. Integration type: gitea, needed only to reply.
Settings
In a config file
telegram_webhook
Runs on a message delivered by the Telegram Bot API, and sends the agent’s answer back to the chat it came from. Each chat keeps one conversation, so the agent remembers earlier messages in that chat. Namespace:telegram. Needs a path. Integration type: telegram_bot.
Settings
In a config file
discord_gateway
Connects to Discord as a bot and runs on the messages it hears, answering in the channel that asked. It connects out to Discord, so it has no path and needs no address Discord can reach. The bot needs the Message Content intent turned on in the Discord developer portal. Each channel keeps one conversation, and a Discord thread counts as a channel of its own. Namespace:discord. No path. Integration type: discord.
Settings
In a config file
Related
Entries and entry handlers
What entries are, and how to choose one.
Available integrations
The integration each handler needs.
CLI reference
The keys every entry shares, and the rules for several entries.
Dynamic content reference
The functions a webhook entry reads the request with.