Yoke.sh
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

TypeWhenPayload
runtime.startedBoot completes(minimal)
instance.createdInstance provisionedinstance metadata
instance.destroyedInstance torn downinstance id

Conversation events

From conversationEvents in @yoke/sdk:

TypeWhen
conversation.actor.createdActor row created
conversation.createdConversation row created
conversation.participant.joinedParticipant added
conversation.participant.leftleft_at set
conversation.participant.updatedParticipant metadata updated
conversation.message.postedMessage inserted
conversation.branch.createdSoft 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):

TypeWhen
chat.platform.message.receivedInbound message parsed from external platform webhook
chat.platform.message.sentOutbound message delivered to external platform
chat.platform.channel.linkedExternal 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:

TypeWhen
agent.forum.joinedAfter joinConversation — egress updates joins map
agent.monologue.compactedAfter compaction monologue swap
assistant.follow_up_dueFollow-up schedule fired
guardian.runGuardian 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:

TypePublisher
slack.message.receivedslack portal
work.assignedrouter actor
code.producedcoder actor

Multi-portal workflow events

Common patterns when multiple portals feed a coordinator actor:

TypeStage
ingress.shopify.orderShopify portal
ingress.stripe.paymentStripe portal
ingress.forwardeddeduper actor
case.openedingress-router
case.payment_receivedcase actors
case.ready_to_fulfillcoordinator
case.fulfilledfulfillment
case.resolvedcoordinator

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" } }

On this page