Appearance
Actor and control surfaces
Every visible Director surface is a Matrix actor (a MatrixActorHtmlElement) on the bus. This page enumerates the actor surfaces shipped today and the control ops they expose, both for direct invocation (matrix invoke ...) and for keyboard-driven use through the command bar.
Actor surfaces (shipped)
Each row is a registered custom element from src/index.ts whose class lives in src/components/:
| Tag | Class | Source | Purpose |
|---|---|---|---|
director-app | DirectorApp | DirectorApp.ts | Page-actor, owns all data fetching and surface routing. |
director-command-bar | DirectorCommandBar | components/DirectorCommandBar.ts | Keyboard-first command entry. |
director-explorer-shell | DirectorExplorerShell | components/DirectorExplorerShell.ts | Two-pane Explorer layout (tree + detail). |
director-tree | DirectorTree | components/DirectorTree.ts | Recursive actor tree. |
director-detail | DirectorDetail | components/DirectorDetail.ts | Tab manifold for the selected actor. |
director-ops-feed | DirectorOpsFeed | components/DirectorOpsFeed.ts | Filtered tracing/logging records. |
director-search-shell | DirectorSearchShell | components/DirectorSearchShell.ts | Cross-cutting search. |
director-workstreams-shell | DirectorWorkstreamsShell | components/DirectorWorkstreamsShell.ts | Workstream-actor projection. |
director-tab-overview | TabOverview | components/tabs/TabOverview.ts | Static field display. |
director-tab-interface | TabInterface | components/tabs/TabInterface.ts | Accepts/emits/skills tables. |
director-tab-state | TabState | components/tabs/TabState.ts | Live state-scope view. |
director-tab-cognitive | TabCognitive | components/tabs/TabCognitive.ts | Purpose / regime / system-prompt fields. |
director-tab-memory | TabMemory | components/tabs/TabMemory.ts | memory.search results from system.agents.memory. |
director-tab-children | TabChildren | components/tabs/TabChildren.ts | Actor-introspect children. |
director-tab-sessions | TabSessions | components/tabs/TabSessions.ts | $sessionList + history + new prompt. |
director-session-list / -chat / -messages / -input | DirectorSession* | components/tabs/DirectorSession*.ts | Session-tab subcomponents. |
director-chat-surface-host | DirectorChatSurfaceHost | components/DirectorChatSurfaceHost.ts | Lazy-loads @open-matrix/chat-component/surface. |
mx-split | MxSplit (re-exported from core) | @open-matrix/core/framework/components/MxSplit | Resizable splitter primitive. |
Every component declares static accepts (the ops it handles via the bus mailbox) and static emits (the CustomEvents it dispatches up the DOM for its parent shell to rebroadcast). The static skills block on DirectorApp advertises the actor-inspection skill with ops app.refresh, director.navigate, director.select-actor.
Control surfaces (shipped)
DirectorApp.accepts enumerates the director.* operator ops handled today. Concretely (verified against DirectorApp.ts:79-106):
app.refresh, app.select-actor
director.navigate ← surface: 'explorer'|'workstreams'|'ops'|'search'
director.select-actor ← mount
director.history-back, director.history-forward
director.set-explorer-tab ← tab
director.clear-recent-targets, director.open-recent-target
director.clear-pinned-targets, director.open-pinned-target, director.toggle-pin-target
director.save-view, director.open-saved-view, director.clear-saved-views
director.clear-recent-commands, director.run-recent-command
director.open-package-root, director.open-workstream
director.filter-workstreams
director.open-ops ← optional mount/text/kind/window
director.search ← query
director.focus-command
director.refresh-surface ← surface
director.filter-feed ← scope/text/kind/window
director.layout.setThese can be invoked from any actor on the bus that holds director-app's context, or typed into the command bar. The command bar parses the leading verb and emits a director:command-bar.*-requested event; DirectorApp rebroadcasts that to its own director.* accept handlers.
Control surfaces — target state
DESIGN.md §3.6 enumerates the intended operator surface. None of these are implemented in the current Director adapters. They are documented here so operators can see what the design is converging toward, not what to use today:
- Steering:
session.prompt,session.list(partly viadirector-tab-sessions). - Persistent state:
memory.search(shipped),memory.write,memory.history(target). - Operator config:
prompt-config.get/set,skills.list/enable/disable,triggers.list/upsert/remove,budget.get/set,charter.get/set(all target). - Source:
source-code.get/update(target; Smithers integration).
When backend actors expose those ops, Director can wire them into DirectorApp.accepts and the relevant tabs without changing the page shell. The current adapters are deliberately small to avoid pretending capabilities exist that don't.
See also
Source:
projects/matrix-3/packages/director/src/index.ts(registration),src/DirectorApp.ts:79-106(accepts), andDESIGN.md§3.6 (target ops).