Reference
Event Catalog
Standard stream event types — runtime, conversation, agent, and user-defined events.
Event types use an open namespace — register schemas with defineEvents() for validation and typing. This catalog lists events emitted by the runtime and SDK packages.
Runtime system events
| Type | When | Payload |
|---|---|---|
runtime.started | Boot completes | (minimal) |
instance.created | Instance provisioned | instance metadata |
instance.destroyed | Instance torn down | instance id |
Conversation events
From conversationEvents in @yoke/sdk:
| Type | When |
|---|---|
conversation.actor.created | Actor row created |
conversation.created | Conversation row created |
conversation.participant.joined | Participant added |
conversation.participant.left | left_at set |
conversation.participant.updated | Participant metadata updated |
conversation.message.posted | Message inserted |
conversation.branch.created | Soft fork created |
conversation.message.posted payload
{
conversationId: string;
messageId: string;
messageType: string;
authorParticipantId?: string | null;
branchId?: string | null;
relations?: Array<{
id: string;
messageId: string;
relationType: string;
targetMessageId: string;
createdAt: number;
}>;
}Ids only — read full content from Postgres.
Chat platform events
From chatPlatformEvents in @yoke/sdk (used by defineChatPlatform / bridge actors):
| Type | When |
|---|---|
chat.platform.message.received | Inbound message parsed from external platform webhook |
chat.platform.message.sent | Outbound message delivered to external platform |
chat.platform.channel.linked | External channel linked to a Yoke conversation |
chat.platform.message.received
{
platform: string;
chatPlatformName: string;
externalMessageId: string;
externalChannelId: string;
externalThreadId?: string;
externalUserId: string;
externalUserDisplayName?: string;
body: MessageBody;
timestamp: number;
}Agent events
From agentEvents in @yoke/sdk:
| Type | When |
|---|---|
agent.forum.joined | After joinConversation — egress updates joins map |
agent.monologue.compacted | After compaction monologue swap |
assistant.follow_up_due | Follow-up schedule fired |
guardian.run | Guardian runner spawned |
agent.forum.joined
{
agentActorId: string;
monologueId: string;
monologueParticipantId: string;
forumId: string;
forumParticipantId: string;
}agent.monologue.compacted
{
agentActorId: string;
forumId: string;
forumParticipantId: string;
previousMonologueId: string;
monologueId: string;
monologueParticipantId: string;
}Tutorial package events
From the Quick start minimal package:
| Type | Publisher |
|---|---|
slack.message.received | slack portal |
work.assigned | router actor |
code.produced | coder actor |
Multi-portal workflow events
Common patterns when multiple portals feed a coordinator actor:
| Type | Stage |
|---|---|
ingress.shopify.order | Shopify portal |
ingress.stripe.payment | Stripe portal |
ingress.forwarded | deduper actor |
case.opened | ingress-router |
case.payment_received | case actors |
case.ready_to_fulfill | coordinator |
case.fulfilled | fulfillment |
case.resolved | coordinator |
Registering in your package
import { defineEvents, conversationEvents, agentEvents } from "@yoke/sdk";
const events = defineEvents({
...conversationEvents,
...agentEvents,
"myapp.custom": z.object({ id: z.string() }),
});
export default defineRuntime().events(events) /* ... */;Filter examples
// All conversation messages in a room
{ type: "conversation.message.posted", where: { "payload.conversationId": forumId } }
// Agent replies on monologue
{ type: "conversation.message.posted", where: {
"payload.conversationId": monologueId,
"payload.messageType": "reply",
}}
// Work assignment
{ type: "work.assigned", where: { "payload.lang": "typescript" } }