Repository navigation
Conversation
Add a section on WorkflowEventRouteSpec: when to use it instead of a message router, registration through AgentRunner, WorkflowRunner and register_message_routes, resolver semantics for instance id, event name and data, delivery outcomes (terminal, not found, transient, call timeout), how the Dapr runtime dead-letters DROP and RETRY responses, limits on identifiers and payload size, reserved event names, unique event names per wait, deduplication and its capacity, throughput and scaling, the requirement to subscribe in the app that hosts the workflow, and a security note on topic scoping. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: Casper Nielsen <casper@diagrid.io>
Open
3 of 4 tasks
Document the authorize hook and hook_timeout_seconds, strict filters on event routes, permanent sidecar errors, how timed-out raises are handled on redelivery, when an event can still be raised twice, case-folded reserved names, and the cost of resolvers. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: Casper Nielsen <casper@diagrid.io>
… order Document that authorize receives the resolved WorkflowEventTarget, that CloudEvent attributes are publisher-supplied, and that hooks fail closed. List delivery outcomes in evaluation order, explain exact-message matching for timed-out raises, the separate hook and sidecar pools, the per-hook cost, unique CloudEvent ids, and the canonical-JSON dedupe key shared by every deduplicating route. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: Casper Nielsen <casper@diagrid.io>
…oped dedupe Describe the ALLOW / DENY / UNDECIDED hook outcomes (bounded retry, then dead-letter or a rate-limited drop), the event route dedupe key that covers the resolved target and data so reused CloudEvent ids no longer hide messages, and the pool behavior for calls that time out while queued. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Signed-off-by: Casper Nielsen <casper@diagrid.io>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Documents pub/sub routes that deliver messages to workflows that are already running, added in dapr/dapr-agents#817 (closes dapr/dapr-agents#740).
Adds a "Signaling Running Workflows from Pub/Sub" section to the Dapr Agents core concepts page, next to "Message Router Workflows":
WorkflowEventRouteSpecinstead of@message_router, with an example.approval_response_/user_input_response:event names.authorize(message, ctx, target)hook and the filters have three outcomes: exactlyTrueallows;False, a non-bool or an exception drops; a timeout or saturated hook pool retries within a budget and is then dead-lettered (or dropped with a rate-limited warning). Nothing is raised without an explicitTrue. CloudEventsourceis publisher-supplied.dedupe=False, crash before the ack, another replica without a shared deduper), how timed-out raises are tracked, and how deduplication keys on the id plus the resolved target and data.INVALID_ARGUMENT,PERMISSION_DENIED, …) are handled like a finished workflow, and the outcomes table follows evaluation order.The external-events link points to
workflow-features-concepts.md#external-events-1, the second of the two "External events" headings on that page (the one about buffering), since both headings produce the same base anchor.🤖 Generated with Claude Code