Repository navigation
feat(agents): Let top-level agents message each other - #2566
Merged
Merged
Conversation
messageAgent now accepts the conversation id of another root Conversation. The sender and target must be in the same tenant and scope (public or private), and a private target needs the person behind the sender's Actor to be a member. The target runs the message as an Event Turn with the event system Actor, so no sender authority or credentials cross over. The automated-turn limit gates delivery so two agents cannot loop. Co-Authored-By: David Cramer <23610+dcramer@users.noreply.github.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
|
8 screenshot changes — 8 changed · 0 added · 0 removed Review screenshots in Frameshift |
Member
|
we're likely going to need to be able to delegate-as-us for agent to agent communications |
dcramer
approved these changes
Nov 2, 2026
Member
|
we'll follow up later on list/stop - we'll want those available, but list likely is going to need to let you pass in a conversationId or something like a search param |
This branch was successfully deployed
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.
messageAgentnow takes the conversation id of another top-level agent (a root Conversation, such as a Slack thread), so agents can coordinate without one being a child of the other.Access is checked on every send and fails closed:
The target gets the message as an Event (
junior/agent.top_level_message) and runs it as the event system Actor. The sender's Actor and credentials do not cross over (attribution is not authority). Delivery goes throughadmitAutomatedTurn, so two agents that keep messaging each other stop at the automated-turn limit, as watch Events do.listAgentsandstopAgentstay scoped to the agent tree. Stopping another person's conversation is destructive, and there is no safe list of top-level agents to enumerate.Known limitation, accepted for now: because the target runs as the system Actor, a private target cannot answer a private sender (no person, so no membership). Public pairs can go both ways.
via @dcramer.
--
View Session [Sentry]