Table of Contents

Namespace DotBoxD.Plugins.Runtime

Namespaces

DotBoxD.Plugins.Runtime.Diagnostics
DotBoxD.Plugins.Runtime.Hooks
DotBoxD.Plugins.Runtime.Lifecycle
DotBoxD.Plugins.Runtime.Rpc
DotBoxD.Plugins.Runtime.Subscriptions

Classes

HookPipeline<TEvent, TContext>
HookRegistry
LiveContext<T>
LiveSettingStore
LiveValue<T>
PluginEventAdapterRegistry
PluginExecutionObservation
PluginMessageBindings
RemoteHookPipeline<TEvent>
RemoteHookPipeline<TEvent, TContext>
RemoteHookRegistry

Client-side hook registration surface for a remote plugin server. The fluent stages are lowered by the analyzer; a Run terminal installs the generated verified-IR package through the supplied control-plane callback, while a RunLocal terminal additionally registers its native delegate in the supplied local-handler registry so the server can push filtered+projected values back to it.

RemoteSubscriptionPipeline<TEvent>
RemoteSubscriptionPipeline<TEvent, TContext>
RemoteSubscriptionRegistry

Client-side fire-and-forget subscription registration surface for a remote plugin server. A RunLocal terminal registers its native delegate in the supplied local-handler registry so the server can push filtered+projected values back to it per matching event.

ResultHookDispatchOptions<TResult>

Per-dispatch options for result-returning hooks. Local handlers keep the existing in-process semantics; the timeout applies only to remote result handlers because they cross an IPC boundary that can stall.

SubscriptionPipeline<TEvent, TContext>
SubscriptionRegistry
TypedInstalledKernel<TSettings>

Structs

ResultHookFault

A fault caught while dispatching a result-returning hook (.Register(...) / .RegisterLocal(...)) for one hook context type. HookRegistry.FireAsync isolates a faulting handler — it abstains and falls through to the next registration so one bad handler cannot break the hook point — but that isolation is otherwise silent, which would let a veto-bearing handler (a successful result carrying e.g. CanDie = false) that throws fail open to the host default with no trace. The host observes these faults via PluginServer.Create(onResultHookFault: ...) to surface the failure in its log, mirroring SubscriptionDeliveryFault for fire-and-forget subscriptions. Control flow is unchanged: a faulted handler is still skipped and dispatch still falls through to the next registration.

SubscriptionDeliveryFault

A fault caught while delivering a published event to a subscription. Delivery runs on a background task and these faults are otherwise swallowed (so the game loop is never blocked or crashed by plugin code); the host observes them via PluginServer.Create(onSubscriptionFault: ...) to surface the failure in its log, so a misbehaving Subscriptions.On<T>().Where(...).RunLocal(...) chain is diagnosable instead of silently doing nothing.

Interfaces

IErasedPluginEventAdapter

A type-erased, wire-capable view of a registered IPluginEventAdapter<TEvent>. The closure is captured once at registration time (when the event type is statically known), so the host-side router (WireHook(InstalledKernel, WireOptions?) / WireSubscription(InstalledKernel, WireOptions?)) can wire an installed kernel to the correct typed pipeline terminal by event name — with no reflection at wire time.

Public as a composability seam: resolve one via TryResolveErased(string, out IErasedPluginEventAdapter) and wire a kernel your own way when the WireHook(InstalledKernel, WireOptions?) / WireSubscription(InstalledKernel, WireOptions?) defaults don't fit — without dropping all the way back to a hand-written event-name → typed-On<TEvent>() dispatch.

ILiveSetting

Enums

SubscriptionDeliveryStage

Which stage of subscription delivery threw. Filter is a lowered server-side Where/projection predicate; Handler is a terminal handler (including a RunLocal projection push and the native decode/dispatch it drives across the host boundary).