Whether the rail is collapsed to its slim toggle strip (standalone mode only).
The signed-in user, threaded to the split-pane artifact viewer.
Whether developer affordances ("Open run" links) are revealed (gear-gated).
EMBEDDED mode: the rail renders as the content of the surface panel's Activity tab —
its own header/collapse chrome is hidden (the panel's tab strip owns collapse) and it
stretches to the pane's full width. Default false keeps the original standalone
right-rail presentation for any other consumer.
The active environment id, threaded to the split-pane artifact viewer.
Extra artifacts NOT tied to a specific activity card — the SESSION-REVIEW chain's
carryover artifacts. Rendered as a "Session artifacts" group above the activity list so
a reviewed session's outputs are reachable inside the Activity tab (the live path gets
artifacts from each card's Artifacts). Empty for a live session.
Emitted when an artifact is opened in the split viewer (lets a host react if it wants).
Emitted with the delegated run's ID when an entry's dev "Open run" link is clicked.
ReadonlyPrefersTrue while reduced-motion is preferred — disables the split's drag transition.
The artifact currently shown in the split-pane viewer, or null when the split is closed.
The artifact (right) pane's width percentage — persisted per-user, clamped on load.
Shared live-session state, owned by the overlay shell.
The artifacts a done card carries (empty array when none — keeps the template simple).
Closes the split, returning to a full-width activity list.
Elapsed duration for finished work ("8s", "1m 04s"); null while running (kept cheap).
Whether the artifact a is the one currently open in the split viewer.
A callback method that performs custom clean-up, invoked immediately before a directive, pipe, or service instance is destroyed.
A callback method that is invoked immediately after the default change detector has checked the directive's data-bound properties for the first time, and before any of the view or content children have been checked. It is invoked only once when the directive is instantiated.
as-split drag finished: adopt + persist the artifact (right) pane's width percentage
per-user (debounced, via UserInfoEngine — never localStorage). The split reports
the two area sizes (percent here); index 1 is the artifact pane. A wildcard '*' size
(non-numeric) is ignored — nothing to persist.
Opens (or swaps to) artifact in the split-pane viewer: the activity list keeps the
left pane, the full artifact viewer fills the right. Re-opening the same artifact is a
no-op; opening a different one swaps the right pane. Also reachable from the surface-tabs
"View →" affordance.
Emits the open-run request for the card's delegated run.
True when the dev "Open run" link should render for this card (gear on + run id known).
Toggle the rail between expanded and slim-collapsed (standalone presentation).
The "Session activity" surface (the Activity tab's content): a compact, newest-first list of EVERY tool/agent call of the session — so parallel/multiple delegations live here and the conversation thread stays clean.
Each entry shows agent name, status, the latest friendly step label, elapsed time, and a one-line result preview. When a run produced ARTIFACTS, each artifact renders as an inline PREVIEW card (reusing
mj-artifact-message-card, the same component the conversation messages use). Clicking a preview SPLITS this pane horizontally — activity list on the LEFT, the full artifact viewer on the RIGHT (as-split); clicking another swaps the right pane; a close control collapses back to full-width activity. The split width is persisted per-user via UserInfoEngine (NOT localStorage). This replaces the old "one surface tab per artifact" model.Collapsible via the chevron in its header (standalone presentation only). Presentational over the same RealtimeSessionState the thread renders.