Skip to content

AUTO-GENERATED by bun run audit:bus. Do not edit by hand — regenerate after changing publish/subscribe sites.

Summary

  • 88 distinct topics seen across the codebase
  • 31 declared in src/event-bus/all-topics.ts (TOPICS constant)
  • 57 raw-string / template topics not in TOPICS (candidates to register)
  • 19 topics that couldn't be statically resolved (computed at runtime)
  • 105 publish call sites, 61 subscribe call sites

Each row links to the original call site as path:line so jumping from this index to the source is a click.

#.*

TopicDeclaredPayloadPublishersSubscribers
#(none)src/event-bus/history-recorder.ts:145
lib/plugins/logger.ts:97
lib/plugins/event-viewer.ts:39

?.*

TopicDeclaredPayloadPublishersSubscribers
?.topic(none)src/plugins/routes-plugin.ts:77
lib/plugins/event-viewer.ts:91

agent.*

TopicDeclaredPayloadPublishersSubscribers
agent.chat.inboundsrc/api/ava-tools.ts:199(none)
agent.chat.outboundsrc/api/ava-tools.ts:119(none)
agent.input.requestAGENT_INPUT_REQUEST_PREFIX (ACTION_TOPICS)(none)(none)
agent.input.responseAGENT_INPUT_RESPONSE_PREFIX (ACTION_TOPICS)(none)(none)
agent.skill.latencyAGENT_SKILL_LATENCY (ACTION_TOPICS)src/executor/skill-dispatcher-plugin.ts:546(none)
agent.skill.progressAGENT_SKILL_PROGRESS_PREFIX (ACTION_TOPICS)(none)(none)
agent.skill.requestAGENT_SKILL_REQUEST (ACTION_TOPICS)src/executor/skill-dispatcher-plugin.ts:696
src/plugins/fleet-alerts-evaluator-plugin.ts:191
src/plugins/routes-plugin.ts:96
src/api/a2a-server.ts:395
src/api/ava-tools.ts:145
src/api/ava-tools.ts:354
src/api/openai-compat.ts:173
src/router/router-plugin.ts:299
src/router/router-plugin.ts:346
lib/plugins/discord/inbound.ts:48
lib/plugins/discord/inbound.ts:192
lib/plugins/linear-proto-bridge.ts:106
src/executor/skill-dispatcher-plugin.ts:191
agent.skill.response.{correlationId}(none)src/api/ava-tools.ts:51
agent.skill.toolframeAGENT_SKILL_TOOLFRAME_PREFIX (ACTION_TOPICS)(none)(none)

agent.input.request — Prefix for human-input requests. Full topic is agent.input.request.{correlationId}. An in-process agent's ask_human tool (via POST /api/agent/ask-human) publishes here when it needs an answer from the A2A caller; BusAgentExecutor turns it into an input-required status-update on the caller's stream. See src/api/human-input.ts.

agent.input.response — Prefix for human-input answers. Full topic is agent.input.response.{requestId}. Published when the caller answers via POST /api/a2a/input; unblocks the waiting ask_human handler.

agent.skill.latency — Published by SkillDispatcherPlugin after every successful skill completion that came from a webhook-stamped dispatch (today: github's _handleAutoReview). Structured form of the existing [skill-latency] log line — dashboard tiles + downstream alerting can subscribe and accumulate without parsing stdout. Payload shape: { skill, totalMs, queueMs, executeMs, github? }. - totalMs = webhook arrival → done - queueMs = webhook arrival → dispatch start (bus hops + routing) - executeMs = dispatch start → done (LLM + tools) - github = { owner, repo, number } when the original payload carried it (PR reviews, etc.); absent otherwise.

agent.skill.progress — Prefix for skill-progress events. Full topic is agent.skill.progress.{correlationId}. Skill executors that want to stream intermediate progress to a long-running A2A caller publish to this topic; BusAgentExecutor translates each event into a status-update (state=working, final=false) on the A2A message/stream channel. Opt-in — executors that don't publish lose nothing. See AgentSkillProgressPayload in src/event-bus/payloads.ts.

agent.skill.request — Published to invoke an agent skill (unified dispatch).

agent.skill.toolframe — Prefix for structured tool-call-v1 frames. Full topic is agent.skill.toolframe.{correlationId}. The in-process runtime publishes one frame per tool lifecycle event (started → completed/failed); the a2a-server emits each as a streamed artifact-update DataPart for clients that render a structured tool timeline. Sibling to the plain-text narration on AGENT_SKILL_PROGRESS_PREFIX. Opt-in.

auth.*

TopicDeclaredPayloadPublishersSubscribers
auth.token_refresh_failedlib/plugins/google/auth.ts:105(none)

autonomous.*

TopicDeclaredPayloadPublishersSubscribers
autonomous.outcomeAUTONOMOUS_OUTCOME_PREFIX (ACTION_TOPICS)(none)(none)
autonomous.outcome.#(none)src/plugins/agent-fleet-health-plugin.ts:209

autonomous.outcome — Published by SkillDispatcherPlugin after every task reaches terminal state. Full topic is autonomous.outcome.{systemActor}.{skill}.

busMessage.*

TopicDeclaredPayloadPublishersSubscribers
busMessage.topiclib/plugins/cli.ts:155(none)

ceremony.*

TopicDeclaredPayloadPublishersSubscribers
ceremony.#(none)src/world/extensions/CeremonyStateExtension.ts:64
src/plugins/CeremonyPlugin.ts:130

command.*

TopicDeclaredPayloadPublishersSubscribers
command.a2a.removeCOMMAND_A2A_REMOVE (ACTION_TOPICS)(none)src/plugins/skill-broker-plugin.ts:179
src/plugins/control-plane-registrar-plugin.ts:66
command.a2a.upsertCOMMAND_A2A_UPSERT (ACTION_TOPICS)(none)src/plugins/skill-broker-plugin.ts:175
src/plugins/control-plane-registrar-plugin.ts:65
command.agent.removeCOMMAND_AGENT_REMOVE (ACTION_TOPICS)(none)src/plugins/control-plane-registrar-plugin.ts:64
command.agent.upsertCOMMAND_AGENT_UPSERT (ACTION_TOPICS)(none)src/plugins/control-plane-registrar-plugin.ts:63
command.mcp.removeCOMMAND_MCP_REMOVE (ACTION_TOPICS)(none)src/mcp/mcp-client-plugin.ts:66
src/plugins/control-plane-registrar-plugin.ts:68
command.mcp.upsertCOMMAND_MCP_UPSERT (ACTION_TOPICS)(none)src/mcp/mcp-client-plugin.ts:62
src/plugins/control-plane-registrar-plugin.ts:67
command.route.removeCOMMAND_ROUTE_REMOVE (ACTION_TOPICS)(none)src/plugins/control-plane-registrar-plugin.ts:70
command.route.upsertCOMMAND_ROUTE_UPSERT (ACTION_TOPICS)(none)src/plugins/control-plane-registrar-plugin.ts:69
command.schedule(none)lib/plugins/scheduler.ts:68

command.a2a.upsert — A2A-endpoint mutations (ADR-0004 P3). The registrar persists the entry to workspace/agents.d/<name>.yaml; SkillBroker registers/unregisters the A2AExecutor live in the same turn (no restart). command.a2a.upsert — { name, file, yaml, entry } command.a2a.remove —

command.agent.upsert — Control-plane mutations (ADR-0004 P2). The write API publishes these; the ControlPlaneRegistrar is the sole subscriber + the only writer of the workspace config files. Auditable in bus-history. The file write triggers the agent-runtime hot-reload (P1), so the change goes live within ~5s. command.agent.upsert — { name, file, yaml } → atomic write command.agent.remove — { name, file } → delete

command.mcp.upsert — MCP-server mutations (ADR-0005, ADR-0004 P4). The registrar persists the entry to workspace/mcp-servers.d/<name>.yaml; McpClientPlugin connects and registers/unregisters one McpExecutor per discovered tool live (no restart). command.mcp.upsert — { name, file, yaml, entry } command.mcp.remove —

command.route.upsert — Route (wiring) mutations (ADR-0008 P2). The registrar persists the route to workspace/routes.d/<name>.yaml; RoutesPlugin hot-reloads and (un)subscribes its trigger topic live (no restart). command.route.upsert — { name, file, yaml } command.route.remove —

config.*

TopicDeclaredPayloadPublishersSubscribers
config.updatedlib/plugins/google.ts:132(none)

cron.*

TopicDeclaredPayloadPublishersSubscribers
cron.#CRON_ALL (ACTION_TOPICS)(none)src/router/router-plugin.ts:115
lib/plugins/a2a-delivery.ts:82

cron.# — Wildcard subscription pattern — matches all cron events from SchedulerPlugin.

def.*

TopicDeclaredPayloadPublishersSubscribers
def.topiclib/plugins/scheduler.ts:258(none)

dispatch.*

TopicDeclaredPayloadPublishersSubscribers
dispatch.droppedDISPATCH_DROPPED_PREFIX (ACTION_TOPICS)(none)(none)
dispatch.dropped.#(none)src/plugins/dispatch-drop-escalator-plugin.ts:71

dispatch.dropped — Prefix for dispatcher drop events. Full topic is dispatch.dropped.{reason} where reason ∈ {no_skill, target_unresolved, cooldown}. Published by SkillDispatcherPlugin at each chokepoint drop site so subscribers (dashboard, drop-rate alerts) can count + filter by reason without scraping stdout. Payload shape: see DispatchDroppedPayload in src/event-bus/payloads.ts.

flow.*

TopicDeclaredPayloadPublishersSubscribers
flow.item.completedFLOW_ITEM_COMPLETED (FLOW_TOPICS)lib/plugins/github.ts:661(none)
flow.item.createdFLOW_ITEM_CREATED (FLOW_TOPICS)FlowItemPayloadlib/plugins/github.ts:636(none)
flow.item.updatedFLOW_ITEM_UPDATED (FLOW_TOPICS)lib/plugins/github.ts:651(none)

flow.item.created — Flow-item lifecycle — published by SkillDispatcherPlugin for every dispatch (one item per correlationId, id = skill-<correlationId>). Consumed by the BusHistoryRecorder + FlowStorePlugin (the durable execution log behind GET /api/flows / the orchestration canvas, ADR-0008). Payload: FlowItemPayload.

google.*

TopicDeclaredPayloadPublishersSubscribers
google.gmail.reply.#(none)lib/plugins/google/gmail.ts:245

linear.*

TopicDeclaredPayloadPublishersSubscribers
linear.agent_activity.#(none)lib/plugins/linear.ts:529
linear.create.issue(none)lib/plugins/linear.ts:787
linear.reply.#(none)lib/plugins/linear.ts:670
linear.update.issue.#(none)lib/plugins/linear.ts:734

logger.*

TopicDeclaredPayloadPublishersSubscribers
logger.turn.query(none)lib/plugins/logger.ts:109

message.*

TopicDeclaredPayloadPublishersSubscribers
message.inbound.#MESSAGE_INBOUND_ALL (MESSAGE_TOPICS)(none)src/router/router-plugin.ts:108
lib/plugins/echo.ts:9
message.inbound.discord.{channelId}lib/plugins/discord/inbound.ts:208
lib/plugins/discord/inbound.ts:354
lib/plugins/discord/inbound.ts:400
(none)
message.inbound.discord.{topicSuffix}lib/plugins/discord/slash-commands.ts:124
lib/plugins/discord/slash-commands.ts:143
(none)
message.inbound.github.MESSAGE_INBOUND_GITHUB_PREFIX (MESSAGE_TOPICS)(none)(none)
message.inbound.google.calendarlib/plugins/google/calendar.ts:74(none)
message.inbound.linear.agent_session.#(none)lib/plugins/linear.ts:514
message.inbound.linear.agent_session.createdlib/plugins/linear-agent-session-poller.ts:146(none)
message.inbound.linear.issue.created(none)lib/plugins/linear-proto-bridge.ts:66
message.inbound.onboard(none)lib/plugins/onboarding.ts:143
message.outbound.cli(none)lib/plugins/cli.ts:18
message.outbound.discord.#(none)lib/plugins/discord/outbound.ts:46
message.outbound.discord.alertMESSAGE_OUTBOUND_DISCORD_ALERT (MESSAGE_TOPICS)src/plugins/alert-skill-executor-plugin.ts:138
src/plugins/quinn-review-notifier-plugin.ts:116
(none)
message.outbound.discord.dm.user.#(none)lib/plugins/discord/outbound.ts:132
message.outbound.discord.push.{AGENT_OPS_CHANNEL}src/api/ava-tools.ts:127
src/api/ava-tools.ts:212
(none)
message.outbound.discord.push.{opsChannel}src/plugins/skill-broker-plugin.ts:217(none)
message.outbound.github.#(none)lib/plugins/github.ts:473
message.outbound.google.docs(none)lib/plugins/google/docs.ts:63
message.outbound.google.drive(none)lib/plugins/google/drive.ts:64
message.outbound.signalMESSAGE_OUTBOUND_SIGNAL (MESSAGE_TOPICS)(none)(none)
message.outbound.signal.#(none)lib/plugins/signal.ts:48

message.inbound.# — Wildcard subscription pattern — matches all inbound surface messages.

message.inbound.github. — Prefix for GitHub inbound messages (used with startsWith).

message.outbound.discord.alert — Outbound Discord alert channel.

message.outbound.signal — Base outbound Signal topic (append .{recipient} for DM, .cron for scheduled).

msg.*

TopicDeclaredPayloadPublishersSubscribers
msg.topiclib/plugins/cli.ts:180
lib/plugins/cli.ts:201
lib/plugins/signal.ts:106
(none)

operator.*

TopicDeclaredPayloadPublishersSubscribers
operator.message.failed.{correlationId}lib/plugins/operator-routing.ts:91(none)
operator.message.requestsrc/plugins/dispatch-drop-escalator-plugin.ts:158
src/api/operator.ts:69
lib/plugins/github.ts:1079
lib/plugins/operator-routing.ts:79

quinn.*

TopicDeclaredPayloadPublishersSubscribers
quinn.review.submittedQUINN_REVIEW_SUBMITTED (REVIEW_TOPICS)src/api/pr-inspector.ts:631src/plugins/quinn-review-notifier-plugin.ts:56

quinn.review.submitted — Published by pr-inspector after a review_comment / review_approve / review_request_changes action succeeds. Fire-and-forget signal for any notifier (Discord embed, dashboard activity feed, etc.) that wants to react to Quinn's review verdicts without subscribing to every github API response. See quinn-review-notifier-plugin for the Discord side. Payload shape: { owner, repo, prNumber, event, reviewId?, prUrl? }.

release.*

TopicDeclaredPayloadPublishersSubscribers
release.publishedRELEASE_PUBLISHED (RELEASE_TOPICS)lib/plugins/github.ts:593(none)

release.published — Published by the GitHub plugin when a GitHub Release is published (native release webhook, action=published). Mechanism-agnostic — fires whether the release was cut by auto-release.yml gh release create, release-tools, or by hand. A general fleet lifecycle primitive: content surfacing, changelog aggregation, deploy verification, and announce subscribe here. Payload shape: see ReleasePublishedPayload in lib/types/events.ts.

reply.*

TopicDeclaredPayloadPublishersSubscribers
reply.topiclib/plugins/echo.ts:35
lib/plugins/scheduler.ts:369
(none)

req.*

TopicDeclaredPayloadPublishersSubscribers
req.replyTopiclib/plugins/logger.ts:113(none)

review.*

TopicDeclaredPayloadPublishersSubscribers
review.comment.repliedREVIEW_COMMENT_REPLIED (REVIEW_TOPICS)lib/plugins/github.ts:695src/plugins/review-learning-plugin.ts:77
review.pr.mergedREVIEW_PR_MERGED (REVIEW_TOPICS)lib/plugins/github.ts:671src/plugins/review-learning-plugin.ts:69
review.verdict.dismissedREVIEW_DISMISSED (REVIEW_TOPICS)lib/plugins/github.ts:712src/plugins/review-learning-plugin.ts:83

review.pr.merged — Review-learning signals — published raw by the GitHub plugin, consumed by ReviewLearningPlugin (Qdrant indexing + dismissal tracking). Payload shapes: ReviewPrMergedPayload / ReviewCommentRepliedPayload / ReviewDismissedPayload in lib/types/events.ts.

row.*

TopicDeclaredPayloadPublishersSubscribers
row.replyTopicsrc/executor/task-tracker.ts:178(none)

security.*

TopicDeclaredPayloadPublishersSubscribers
security.incident.reportedSECURITY_INCIDENT_REPORTED (SECURITY_TOPICS)IncidentReportedPayloadsrc/api/incidents.ts:84
src/api/incidents.ts:136
(none)

security.incident.reported — Published when a security incident is detected.

skill.*

TopicDeclaredPayloadPublishersSubscribers
skill.ab_test.register(none)src/executor/skill-ab-test-plugin.ts:194
skill.ab_test.resolvedsrc/executor/skill-ab-test-plugin.ts:284(none)

system.*

TopicDeclaredPayloadPublishersSubscribers
system.errorSYSTEM_ERROR (SYSTEM_TOPICS)(none)lib/plugins/app-alert.ts:48

system.error — App-self error — published by the bus when a subscriber handler throws (#800). Consumed by AppAlertPlugin, which posts a throttled message to the ops Discord webhook. Payload: { source, plugin?, pattern?, error }.

task.*

TopicDeclaredPayloadPublishersSubscribers
task.replyTopicsrc/executor/task-tracker.ts:450(none)

{RESPONSE_TOPIC_WILDCARD}.*

TopicDeclaredPayloadPublishersSubscribers
{RESPONSE_TOPIC_WILDCARD}(none)src/event-bus/skill-response-cache.ts:117

{completedTopic}.*

TopicDeclaredPayloadPublishersSubscribers
{completedTopic}src/plugins/CeremonyPlugin.ts:466(none)

{computed}.*

TopicDeclaredPayloadPublishersSubscribers
{computed}src/api/a2a-server.ts:159
src/api/a2a-server.ts:204
src/api/a2a-server.ts:226
src/api/a2a-server.ts:246
src/api/a2a-server.ts:309
src/api/a2a-server.ts:319
src/api/a2a-server.ts:344
src/api/a2a-server.ts:360
src/api/a2a-server.ts:382
(none)

{executeTopic}.*

TopicDeclaredPayloadPublishersSubscribers
{executeTopic}src/plugins/ceremony-skill-executor-plugin.ts:121
src/plugins/CeremonyPlugin.ts:353
(none)

{failedTopic}.*

TopicDeclaredPayloadPublishersSubscribers
{failedTopic}(none)src/api/operator.ts:61

{inputReqTopic}.*

TopicDeclaredPayloadPublishersSubscribers
{inputReqTopic}(none)src/api/a2a-server.ts:243

{progressTopic}.*

TopicDeclaredPayloadPublishersSubscribers
{progressTopic}src/agent-runtime/agent-runtime-plugin.ts:345
src/agent-runtime/agent-runtime-plugin.ts:373
src/api/discord.ts:341
src/api/a2a-server.ts:182

{replyTopic}.*

TopicDeclaredPayloadPublishersSubscribers
{replyTopic}src/executor/skill-dispatcher-plugin.ts:869
lib/plugins/onboarding.ts:376
src/plugins/CeremonyPlugin.ts:387
src/api/a2a-server.ts:263
src/api/openai-compat.ts:159

{requestTopic}.*

TopicDeclaredPayloadPublishersSubscribers
{requestTopic}src/api/human-input.ts:82(none)

{responseTopic}.*

TopicDeclaredPayloadPublishersSubscribers
{responseTopic}src/api/human-input.ts:143(none)

{skillRequestTopic}.*

TopicDeclaredPayloadPublishersSubscribers
{skillRequestTopic}src/plugins/CeremonyPlugin.ts:412(none)

{toolFrameTopic}.*

TopicDeclaredPayloadPublishersSubscribers
{toolFrameTopic}(none)src/api/a2a-server.ts:222

{topic}.*

TopicDeclaredPayloadPublishersSubscribers
{topic}src/world/extensions/CeremonyStateExtension.ts:116
src/agent-runtime/agent-runtime-plugin.ts:319
src/agent-runtime/agent-runtime-plugin.ts:399
src/executor/extensions/confidence.ts:166
src/executor/extensions/effect-domain.ts:85
src/executor/extensions/cost.ts:210
src/executor/skill-dispatcher-plugin.ts:750
src/executor/skill-dispatcher-plugin.ts:825
src/executor/skill-dispatcher-plugin.ts:849
src/executor/skill-dispatcher-plugin.ts:898
src/executor/executors/proto-sdk-executor.ts:86
src/executor/task-tracker.ts:404
src/api/routes-crud.ts:34
src/api/mcp-crud.ts:113
src/api/agents-crud.ts:55
src/api/operations.ts:106
src/api/operations.ts:156
src/api/operations.ts:191
lib/plugins/debug.ts:31
lib/plugins/onboarding.ts:326
lib/plugins/linear.ts:429
lib/plugins/linear.ts:476
lib/plugins/linear.ts:555
lib/plugins/linear.ts:602
lib/plugins/linear.ts:635
lib/plugins/linear.ts:852
lib/plugins/github.ts:561
lib/plugins/github.ts:836
lib/plugins/github.ts:969
lib/plugins/operator-routing.ts:129
lib/plugins/google/gmail.ts:155
src/index.ts:777
src/plugins/flow-store-plugin.ts:55

Unresolved call sites

These sites pass a non-literal topic that the static scan couldn't resolve to a string. The reported topic is a heuristic placeholder.

SiteKindSource
lib/plugins/cli.ts:155publishbusMessage.topic
lib/plugins/cli.ts:180publishmsg.topic
lib/plugins/cli.ts:201publishmsg.topic
lib/plugins/debug.ts:31publishtopic
lib/plugins/echo.ts:35publishreply.topic
lib/plugins/event-viewer.ts:91subscribews.data.topic
lib/plugins/github.ts:561publishtopic
lib/plugins/github.ts:836publishtopic
lib/plugins/github.ts:969publishtopic
lib/plugins/google/gmail.ts:155publishtopic
lib/plugins/linear.ts:429publishtopic
lib/plugins/linear.ts:476publishtopic
lib/plugins/linear.ts:555publishtopic
lib/plugins/linear.ts:602publishtopic
lib/plugins/linear.ts:635publishtopic
lib/plugins/linear.ts:852publishtopic
lib/plugins/logger.ts:113publishreq.replyTopic
lib/plugins/onboarding.ts:326publishtopic
lib/plugins/onboarding.ts:376publishreplyTopic
lib/plugins/operator-routing.ts:129publishtopic
lib/plugins/scheduler.ts:258publishdef.topic
lib/plugins/scheduler.ts:369publishreply.topic
lib/plugins/signal.ts:106publishmsg.topic
src/agent-runtime/agent-runtime-plugin.ts:319publishtopic
src/agent-runtime/agent-runtime-plugin.ts:345publishprogressTopic
src/agent-runtime/agent-runtime-plugin.ts:373publishprogressTopic
src/agent-runtime/agent-runtime-plugin.ts:399publishtopic
src/api/a2a-server.ts:159publish`AgentEvent.task({
  id: taskId,
  contextId,
  status: {
    sta` |

| src/api/a2a-server.ts:182 | subscribe | progressTopic | | src/api/a2a-server.ts:204 | publish | AgentEvent.statusUpdate({ taskId, contextId, statu | | src/api/a2a-server.ts:222 | subscribe | toolFrameTopic | | src/api/a2a-server.ts:226 | publish | AgentEvent.artifactUpdate({ taskId, contextId, art | | src/api/a2a-server.ts:243 | subscribe | inputReqTopic | | src/api/a2a-server.ts:246 | publish | AgentEvent.statusUpdate({ taskId, contextId, statu | | src/api/a2a-server.ts:263 | subscribe | replyTopic | | src/api/a2a-server.ts:309 | publish | AgentEvent.artifactUpdate({ taskId, contextId, | | src/api/a2a-server.ts:319 | publish | AgentEvent.statusUpdate({ taskId, contextId, statu | | src/api/a2a-server.ts:344 | publish | AgentEvent.statusUpdate({ taskId, contextId, statu | | src/api/a2a-server.ts:360 | publish | AgentEvent.statusUpdate({ taskId, contextId, status: { | | src/api/a2a-server.ts:382 | publish | AgentEvent.statusUpdate({ taskId, contextId, status: { | | src/api/agents-crud.ts:55 | publish | topic | | src/api/discord.ts:341 | publish | progressTopic | | src/api/human-input.ts:82 | publish | requestTopic | | src/api/human-input.ts:143 | publish | responseTopic | | src/api/mcp-crud.ts:113 | publish | topic | | src/api/openai-compat.ts:159 | subscribe | replyTopic | | src/api/operations.ts:106 | publish | topic | | src/api/operations.ts:156 | publish | topic | | src/api/operations.ts:191 | publish | topic | | src/api/operator.ts:61 | subscribe | failedTopic | | src/api/routes-crud.ts:34 | publish | topic | | src/event-bus/skill-response-cache.ts:117 | subscribe | RESPONSE_TOPIC_WILDCARD | | src/executor/executors/proto-sdk-executor.ts:86 | publish | topic | | src/executor/extensions/confidence.ts:166 | publish | topic | | src/executor/extensions/cost.ts:210 | publish | topic | | src/executor/extensions/effect-domain.ts:85 | publish | topic | | src/executor/skill-dispatcher-plugin.ts:750 | publish | topic | | src/executor/skill-dispatcher-plugin.ts:825 | publish | topic | | src/executor/skill-dispatcher-plugin.ts:849 | publish | topic | | src/executor/skill-dispatcher-plugin.ts:869 | publish | replyTopic | | src/executor/skill-dispatcher-plugin.ts:898 | publish | topic | | src/executor/task-tracker.ts:178 | publish | row.replyTopic | | src/executor/task-tracker.ts:404 | publish | topic | | src/executor/task-tracker.ts:450 | publish | task.replyTopic | | src/index.ts:777 | subscribe | topic | | src/plugins/ceremony-skill-executor-plugin.ts:121 | publish | executeTopic | | src/plugins/CeremonyPlugin.ts:353 | publish | executeTopic | | src/plugins/CeremonyPlugin.ts:387 | subscribe | replyTopic | | src/plugins/CeremonyPlugin.ts:412 | publish | skillRequestTopic | | src/plugins/CeremonyPlugin.ts:466 | publish | completedTopic | | src/plugins/flow-store-plugin.ts:55 | subscribe | topic | | src/plugins/routes-plugin.ts:77 | subscribe | route.when.topic | | src/world/extensions/CeremonyStateExtension.ts:116 | publish | topic |

protoWorkstacean — a switchboard, not an agent.