Appearance
Actor ops (SmithersSupervisor and friends)
Reference for the public actor protocol. Every entry below is a real static accepts declaration and a real on* handler in source.
SmithersSupervisor (mount: smithers)
projects/matrix-3/packages/smithers/src/actors/SmithersSupervisor.ts:315-353. The list is large because Smithers handles its own UI state and workstream-request inbox.
Accepts
| Op | Handler | What it does |
|---|---|---|
$introspect | onIntrospect | Standard Matrix introspection (component class + accepts + emits). |
$prompt | inherited | LLM-prompt entry point. static promptable = true. |
workstream.status | onWorkstreamStatus | Workstream-status projection. |
workstream.request | onWorkstreamRequest | Alias of smithers.request-service. |
workstream.agents | onWorkstreamAgents | List of active agent runtimes. |
workspace.navigate | onWorkspaceNavigate | Forward to WorkspaceActor workspace.navigate. |
workspace.set-queue | onWorkspaceSetQueue | Forward to WorkspaceActor. |
smithers.start | onSmithersStart | Start convergence on an issue. |
smithers.stop | onSmithersStop | Stop convergence on issue(s). Returns { stopped: number[] }. |
smithers.steer | onSmithersSteer | Inject a steering prompt; restarts the agent with the same context. |
smithers.status | onSmithersStatus | Aggregate status: active issues, history summary, version. |
smithers.graph.status | onSmithersGraphStatus | Compact graph projection (totalIssues, open/closed/ready/blocked, criticalPathLength, bottlenecks). |
smithers.sign-off | onSmithersSignOff | Forced sign-off; per-constraint argumentation. |
smithers.history | onSmithersHistory | Past completed outcomes. |
smithers.metrics | onSmithersMetrics | Aggregate metrics (avg duration, turns, tool calls). |
smithers.review-queue | onSmithersReviewQueue | Pending reviews waiting on barrier. |
smithers.request-service | onSmithersRequestService | Add a workstream-request to the inbox. |
smithers.request-dispatch | onSmithersRequestDispatch | Dispatch a queued request to convergence. |
smithers.request-acknowledge | onSmithersRequestAcknowledge | Mark a request acknowledged. |
smithers.request-message | onSmithersRequestMessage | Append a thread message to a request. |
smithers.request-resolve | onSmithersRequestResolve | Mark a request resolved. |
smithers.workstream-requests | onSmithersWorkstreamRequests | Read the inbox projection. |
smithers.configure | onSmithersConfigure | Persist repo, label, maxConcurrentIssues. |
smithers.config | onSmithersConfig | Read current config. |
smithers.health | onSmithersHealth | Live health (active count, last heartbeat). |
smithers.timeline | onSmithersTimeline | Chronological event timeline. |
smithers.error-log | onSmithersErrorLog | Recent error log lines (capped). |
smithers.active-agents | onSmithersActiveAgents | List of currently dispatched agents. |
smithers.agents | onSmithersAgents | Discover SDK worker runtimes. |
smithers.containers | onSmithersContainers | Forward to ContainerManager. |
smithers.browser-connect | onSmithersBrowserConnect | Register a browser sink for activity routing. |
smithers.browser-disconnect | onSmithersBrowserDisconnect | Unregister. |
smithers.ratchet | onSmithersRatchet | Ratchet projection (count + entries). |
smithers.arch-constraints | onSmithersArchConstraints | Architecture-doc-watcher constraints + doc count. |
smithers.auto | onSmithersAuto | Toggle auto-dispatch. |
smithers.constraint-approved | onSmithersConstraintApproved | Approve a chat-derived constraint for an issue. |
smithers.chat-constraints | onSmithersChatConstraints | Read chat constraints for an issue. |
Emits
$stateChanged, $structureChanged,
smithers.started, smithers.converged, smithers.escalated,
smithers.requested, smithers.request-message, smithers.request-updatedCognitive metadata
ts
static description, static purpose, static systemPrompt
static promptable = true
static regime = 'focused'
static memoryScope = 'actor'
static planScope = 'actor'
static continuationType = 'persistent'
static promptTriggers = [ ... 5 entries ... ]
static childEventWhitelist = ['ready', 'disposed', 'error', 'completed', 'converged', 'escalated']See Smithers as a Matrix package for what these fields mean.
ConstraintGraph (mount: smithers.graph)
projects/matrix-3/packages/smithers/src/actors/ConstraintGraph.ts:41-66.
Accepts
$introspect, $prompt,
graph.rebuild, graph.constraints-for, graph.neighborhood,
graph.topology, graph.status, graph.summary, graph.dependers,
graph.readiness, graph.dependency-chain, graph.critical-path,
graph.blocker-report, graph.topology-rail, graph.issue-inspector,
graph.conflictsEach graph.*-for op returns a typed projection. The supervisor depends on:
graph.constraints-for(N)— at the start ofsmithers.start.graph.statusandgraph.summary— forsmithers.graph.status.graph.topology-rail— polled by the workbench at the configured interval.graph.issue-inspector(N)— on issue selection.
Emits
$stateChanged, graph.rebuiltGitHubAdapter (mount: smithers.github)
ts
// projects/matrix-3/packages/smithers/src/actors/GitHubAdapter.ts:11-25
static override accepts = {
'$introspect': {},
'$prompt': {},
'github.list-issues': {},
'github.get-issue': {},
'github.refresh': {},
'github.set-repo': {},
};
static override emits = {
'$stateChanged': {},
'github.refreshed': {},
};github.list-issues and github.get-issue are TTL-cached (60s default). github.refresh forces a refetch. github.set-repo clears the cache.
ContainerManager (mount: smithers.containers)
ts
// projects/matrix-3/packages/smithers/src/actors/ContainerManager.ts:81-89
static override accepts = {
'container.spawn': {},
'container.stop': {},
'container.list': {},
'container.remove': {},
'container.images': {},
};container.spawn starts a Docker container with MATRIX_NATS_URL injected. container.list returns ContainerRecord[]. The actor subscribes to mx.discovery.heartbeat and prunes offline containers every 15s.
WorkspaceActor (mount: smithers.workspace)
projects/matrix-3/packages/smithers/src/actors/WorkspaceActor.ts:80-99.
Accepts
$introspect, $prompt,
workspace.focus, workspace.select-issue, workspace.navigate,
workspace.show-tab, workspace.set-overlay, workspace.graph-mode,
workspace.set-graph-mode, workspace.set-filter, workspace.set-queue,
workspace.toggle-pin, workspace.state, workspace.select-edge,
workspace.fork, workspace.attach, workspace.treeEmits
$stateChangedworkspace.state returns the full WorkspaceState object — every UI knob, the selected issue, the active route, current tab, current graph mode, pinned overlays. Mutating ops increment _version and emit $stateChanged so every subscriber re-renders against the same projection.
workspace.tree walks src/, tests/, types/ of the working dir up to 200 entries, returning a sorted relative-path list — used by the Inspector's diff tab.
CodingAgent (per-issue, ephemeral; only Path A)
projects/matrix-3/packages/smithers/src/coding-agent/CodingAgent.ts:179-194.
accepts: code.run, code.steer, code.stop, code.status, code.history, code.chat
emits: $stateChanged, code.event, code.doneIn Path B, the SDK worker exposes equivalent ops on system.agents.
See also
Source: the
static acceptsandstatic emitsdeclarations in each actor file.