SystemListenerContext
interfaceThe context a declared system listener runs with. Everything on the base context plus `ui`, so a listener can raise a notification or ask a question when the event warrants it.
Import
import { SystemListenerContext } from '@modular/sdk';Members21
- ai
AiRuntimeApiOne off answers, agents, models, and sessions.
- completedActionTraces
ReadonlySignal<readonly HostActionTrace[]>Traces of actions that have finished, for mods that show or verify what the app did. Pair it with ContextBase.subscribeActionTraces to be told when a new one lands.
- hooks
HostHookClientRegister interceptors from code.
- logger
LoggerYour mod's log channel.
- media
MediaApiScreen, camera, and audio capture.
- modId
`${string}.${string}` & $brand<'ModId'>The id of the mod this handler belongs to.
- permissions
PermissionClientWhat the user has granted, denied, and is being asked.
- system
SystemCapabilitiesHost event sources you can listen to, and the catalog to discover them.
- terminal
TerminalApiCreate and drive terminals.
- ui
UiCapability- workbench
WorkbenchApiThe window shell: theme, layout, status bar, opening things.
- workspace
WorkspaceApiFolders, files, and configuration of the open workspace.
- action
<K extends string>(id: K, input: ModularActionInput<K>, options?: HostActionClientRunOptions) => Promise<ModularActionResult<K>>Dispatch an action. This is the only way a mod changes the app. Takes a host action id or a bare command id. Inside an event listener, prefer `occurrence.action(...)` so the causal link survives.
- describeAction
(id: string) => ModularActionDescriptorDto | undefinedLook up one action's schema, or `undefined` if nothing owns that id.
- describeEvent
(id: string) => ModularEventDescriptorDto | undefinedLook up one event's schema, or `undefined` if nothing declares that id.
- emit
<TPayload>(descriptor: Event<TPayload>, payload: TPayload, options?: HostActionClientRunOptions) => Promise<EventEmitResult>Publish one of your mod's own events to whoever is listening.
- listActions
() => readonly ModularActionDescriptorDto[]Every action available right now, including those other mods contribute.
- listEvents
() => readonly ModularEventDescriptorDto[]Every event you can subscribe to right now.
- on
<TPayload>(descriptor: Event<TPayload>, listener: (event: EventOccurrence<TPayload>) => void | Promise<void>) => Disposable | <K extends ModularEventId>(id: K, listener: (event: EventOccurrence<ModularEventMap[K]>) => void | Promise<void>) => DisposableSubscribe to an event, either your own declared one or a host event named by id. Dispose the result to stop listening.
- state
<TValue>(declaration: StateDeclaration<TValue>) => OwnedState<TValue> | <TName extends 'editor.selection' | 'host.scope' | 'workbench.colorTheme' | 'workbench.layout' | 'workbench.windowState' | 'workspace.focusedEditorGroupTab'>(name: TName) => State<BuiltInStateValue<TName>>Acquire a live state handle. Passing your own `state(...)` declaration gives an OwnedState you can write with `set`. Passing a built-in name gives a read-only State: host state changes only through actions.
- subscribeActionTraces
(listener: () => void) => DisposableRuns `listener` whenever a new trace lands in `completedActionTraces`.
Notes
- category
- State