Skip to content

Class HookSubscriptionManifest

Namespace: DotBoxD.Plugins
Assembly: DotBoxD.Plugins.dll

public sealed record HookSubscriptionManifest : IEquatable<HookSubscriptionManifest>

objectHookSubscriptionManifest

IEquatable<HookSubscriptionManifest>

object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.ReferenceEquals(object?, object?), object.ToString()

public HookSubscriptionManifest(string Event, string Kernel)

Event string

Kernel string

public string Event { get; init; }

string

true only when the entire lowered predicate is exactly the conjunction of DotBoxD.Plugins.HookSubscriptionManifest.IndexedPredicates — i.e. the index fully covers it, so a host whose index check passes MAY skip the verified IR. false (the conservative default) means the index is a prefilter only and the verified IR predicate must still run after the host’s index check accepts an event.

public bool IndexCoversPredicate { get; init; }

bool

Host-readable, index-eligible constraints DotBoxD extracted from the lowered .Where(…) chain — each a single event-property <op> constant comparison that the host may compile into an equality/range dispatch bucket to prefilter events before the verified IR predicate runs. Always a subset of the real predicate (every entry is a necessary AND condition), so rejecting on any entry is safe regardless of DotBoxD.Plugins.HookSubscriptionManifest.IndexCoversPredicate. Optional; empty when the predicate had no index-eligible leaves. Set via object initializer.

public IReadOnlyList<IndexedPredicate> IndexedPredicates { get; init; }

IReadOnlyList<IndexedPredicate>

public string Kernel { get; init; }

string

true when this subscription is a lowered local-terminal chain (a remote RunLocal): the Where/Select filter and projection run server-side as verified IR and the Handle entrypoint returns the projected value (rather than performing a host send) so the host pushes it across the IPC boundary to the plugin’s native delegate. The default false is an ordinary side-effecting chain whose Handle result is discarded.

public bool LocalTerminal { get; init; }

bool

The host dispatch priority for a lowered result-returning hook chain. Higher values run first, with install order preserving ties. Optional; defaults to zero.

public int Priority { get; init; }

int

For a DotBoxD.Plugins.HookSubscriptionManifest.LocalTerminal chain, the manifest type name of the projected value the Handle entrypoint returns (e.g. “string”, “int”) — the value the host encodes and pushes to the plugin. null for ordinary chains. Additive; defaults to null.

public string? ProjectedType { get; init; }

string?

true for a remote RegisterLocal result hook: the server evaluates the lowered filter and requests the result from the plugin process. false for sandbox Register, where the sandbox Handle entrypoint returns the result directly.

public bool ResultLocalTerminal { get; init; }

bool

The fully qualified result type declared by the hook context’s DotBoxD.Abstractions.HookAttribute for a lowered Register/RegisterLocal chain. null for ordinary notification hooks.

public string? ResultType { get; init; }

string?