Stamp additional meta fields on every composed frame. Used for
cross-cutting non-modality meta like acousticDb (sound source
amplitude, drives propagation reach) and channelId (channel
attribution for chat / multi-party DM frames). Merges with whatever
the framework otherwise stamps (timestamp, commandId,
causingCommandId, modality). Successive calls accumulate.
Stamp the perception-modality attribution on every composed
frame's meta.modality. Used by sensory producers
(VocalMixin.say → 'hearing', AetherMixin.tell →
'verbal-esp') so reception-side gating at
SensorMixin.filterMessage can drop frames whose modality
isn't in the recipient's sensorium. System / log / narrative
frames omit this call and deliver unconditionally.
Set a shared payload — applied to any audience that doesn't override.
Compose every queued audience frame, stamp commandId / causingCommandId from the ambient ExecutionContext, and dispatch.
Append shared tags. Merged with per-audience auto-tags.
Frame for everyone inside the actor's contents (excluding the actor itself). Requires the actor to be a Container — used when the actor IS the place (haunted location, ambient narrator).
Optionalpayload: unknownFrame for everyone in the actor's environment except the actor and any explicit target. Requires the actor to be Containable.
Optionalpayload: unknownSet the topic. Required before .send().
Frame for the actor. Requires the actor to be a Sensor (else throws — composition error, not user-input error).
Optionalpayload: unknownFrame for an explicit target. Throws if the target isn't a Sensor.
Optionalpayload: unknown
Compose multi-audience messages with one
.send()call. Built viaMessageApi.scene(actor); private constructor — no other entry.