AIRI Server API - v0.10.2
    Preparing search index...

    Interface ProtocolEvents<C>

    interface ProtocolEvents<C = undefined> {
        error: ErrorEvent;
        "error:permission": ErrorPermissionEvent;
        "module:authenticate": ModuleAuthenticateEvent;
        "module:authenticated": ModuleAuthenticatedEvent;
        "module:compatibility:request": ModuleCompatibilityRequestEvent;
        "module:compatibility:result": ModuleCompatibilityResultEvent;
        "registry:modules:sync": RegistryModulesSyncEvent;
        "registry:modules:health:unhealthy": RegistryModulesHealthUnhealthyEvent;
        "registry:modules:health:healthy": RegistryModulesHealthHealthyEvent;
        "module:announce": ModuleAnnounceEvent<C>;
        "module:permissions:declare": ModulePermissionsDeclareEvent;
        "module:permissions:request": ModulePermissionsRequestEvent;
        "module:permissions:granted": ModulePermissionsGrantedEvent;
        "module:permissions:denied": ModulePermissionsDeniedEvent;
        "module:permissions:current": ModulePermissionsCurrentEvent;
        "module:announced": ModuleAnnouncedEvent;
        "module:de-announced": ModuleDeAnnouncedEvent;
        "module:prepared": ModulePreparedEvent;
        "module:configuration:needed": ModuleConfigurationNeededEvent<C>;
        "module:status": ModuleStatusEvent;
        "module:configuration:validate:request": ModuleConfigurationValidateRequestEvent<
            C,
        >;
        "module:configuration:validate:response": ModuleConfigurationValidateResponseEvent<
            C,
        >;
        "module:configuration:validate:status": ModuleConfigurationValidateStatusEvent;
        "module:configuration:plan:request": ModuleConfigurationPlanRequestEvent<C>;
        "module:configuration:plan:response": ModuleConfigurationPlanResponseEvent<
            C,
        >;
        "module:configuration:plan:status": ModuleConfigurationPlanStatusEvent;
        "module:configuration:commit": ModuleConfigurationCommitEvent<C>;
        "module:configuration:commit:status": ModuleConfigurationCommitStatusEvent;
        "module:configuration:configured": ModuleConfigurationConfiguredEvent<C>;
        "module:contribute:capability:offer": ModuleContributeCapabilityOfferEvent;
        "module:contribute:capability:configuration:needed": ModuleContributeCapabilityConfigurationNeededEvent<
            C,
        >;
        "module:contribute:capability:configuration:validate:request": ModuleContributeCapabilityConfigurationValidateRequestEvent<
            C,
        >;
        "module:contribute:capability:configuration:validate:response": ModuleContributeCapabilityConfigurationValidateResponseEvent<
            C,
        >;
        "module:contribute:capability:configuration:validate:status": ModuleContributeCapabilityConfigurationValidateStatusEvent;
        "module:contribute:capability:configuration:plan:request": ModuleContributeCapabilityConfigurationPlanRequestEvent<
            C,
        >;
        "module:contribute:capability:configuration:plan:response": ModuleContributeCapabilityConfigurationPlanResponseEvent<
            C,
        >;
        "module:contribute:capability:configuration:plan:status": ModuleContributeCapabilityConfigurationPlanStatusEvent;
        "module:contribute:capability:configuration:commit": ModuleContributeCapabilityConfigurationCommitEvent<
            C,
        >;
        "module:contribute:capability:configuration:commit:status": ModuleContributeCapabilityConfigurationCommitStatusEvent;
        "module:contribute:capability:configuration:configured": ModuleContributeCapabilityConfigurationConfiguredEvent<
            C,
        >;
        "module:contribute:capability:activated": ModuleContributeCapabilityActivatedEvent;
        "module:status:change": ModuleStatusChangeEvent;
        "module:configure": ModuleConfigureEvent<C>;
        "module:consumer:register": ModuleConsumerRegisterEvent;
        "module:consumer:unregister": ModuleConsumerUnregisterEvent;
        "ui:configure": UiConfigureEvent<C>;
        "input:text": WebSocketEventInputText;
        "input:text:voice": WebSocketEventInputTextVoice;
        "input:voice": WebSocketEventInputVoice;
        "output:gen-ai:chat:tool-call": OutputGenAiChatToolCallEvent;
        "output:gen-ai:chat:message": OutputGenAiChatMessageEvent;
        "output:gen-ai:chat:complete": OutputGenAiChatCompleteEvent;
        "spark:notify": SparkNotifyEvent;
        "spark:emit": SparkEmitEvent;
        "spark:command": SparkCommandEvent;
        "transport:connection:heartbeat": TransportConnectionHeartbeatEvent;
        "context:update": ContextUpdateEvent;
    }

    Type Parameters

    • C = undefined
    Index

    Properties

    error error:permission module:authenticate module:authenticated module:compatibility:request module:compatibility:result registry:modules:sync registry:modules:health:unhealthy registry:modules:health:healthy module:announce module:permissions:declare module:permissions:request module:permissions:granted module:permissions:denied module:permissions:current module:announced module:de-announced module:prepared module:configuration:needed module:status module:configuration:validate:request module:configuration:validate:response module:configuration:validate:status module:configuration:plan:request module:configuration:plan:response module:configuration:plan:status module:configuration:commit module:configuration:commit:status module:configuration:configured module:contribute:capability:offer module:contribute:capability:configuration:needed module:contribute:capability:configuration:validate:request module:contribute:capability:configuration:validate:response module:contribute:capability:configuration:validate:status module:contribute:capability:configuration:plan:request module:contribute:capability:configuration:plan:response module:contribute:capability:configuration:plan:status module:contribute:capability:configuration:commit module:contribute:capability:configuration:commit:status module:contribute:capability:configuration:configured module:contribute:capability:activated module:status:change module:configure module:consumer:register module:consumer:unregister ui:configure input:text input:text:voice input:voice output:gen-ai:chat:tool-call output:gen-ai:chat:message output:gen-ai:chat:complete spark:notify spark:emit spark:command transport:connection:heartbeat context:update

    Properties

    error: ErrorEvent
    "error:permission": ErrorPermissionEvent
    "module:authenticate": ModuleAuthenticateEvent
    "module:authenticated": ModuleAuthenticatedEvent
    "module:compatibility:request": ModuleCompatibilityRequestEvent

    Plugin asks host to negotiate protocol + API compatibility.

    "module:compatibility:result": ModuleCompatibilityResultEvent

    Host replies with accepted mode/result for protocol + API compatibility.

    "registry:modules:sync": RegistryModulesSyncEvent

    Server-side registry sync for known online modules. Sent to newly authenticated peers to bootstrap module discovery.

    "registry:modules:health:unhealthy": RegistryModulesHealthUnhealthyEvent

    Broadcast when a module's heartbeat expires (unhealthy).

    "registry:modules:health:healthy": RegistryModulesHealthHealthyEvent

    Broadcast when a previously unhealthy module resumes heartbeating (healthy again).

    "module:announce": ModuleAnnounceEvent<C>

    Broadcast to all peers when a module announces itself, with its identity, static metadata, and declared dependencies. Host can use this to decide when to prepare/configure modules based on their needs and capabilities. Module that registering self can use this to declare its presence and what it offers, and to trigger orchestration flows in the host or other modules.

    NOTICE: Modules that would love to discover peers SHOULD NOT wait or listen to this event, instead module:announced or module:de-announced, or registry:modules:sync and registry:modules:health:* events for more reliable discovery and tracking.

    "module:permissions:declare": ModulePermissionsDeclareEvent
    "module:permissions:request": ModulePermissionsRequestEvent
    "module:permissions:granted": ModulePermissionsGrantedEvent
    "module:permissions:denied": ModulePermissionsDeniedEvent
    "module:permissions:current": ModulePermissionsCurrentEvent
    "module:announced": ModuleAnnouncedEvent

    Broadcast to all peers when a module successfully announces.

    "module:de-announced": ModuleDeAnnouncedEvent

    Broadcast to all peers when a module is unregistered (disconnect, heartbeat expiry, error, etc).

    "module:prepared": ModulePreparedEvent

    Prepare completed. Host can move into config apply/validate.

    Example: module:prepared { missingDependencies: [] }

    "module:configuration:needed": ModuleConfigurationNeededEvent<C>

    Module needs configuration to proceed to prepared/configured.

    "module:status": ModuleStatusEvent

    Lifecycle status updates for orchestration/UX.

    Example: module:status { phase: "ready" }

    "module:configuration:validate:request": ModuleConfigurationValidateRequestEvent<
        C,
    >

    Ask the module to validate current config (host → module).

    "module:configuration:validate:response": ModuleConfigurationValidateResponseEvent<
        C,
    >

    Validation response (module → host), with optional plan suggestions.

    "module:configuration:validate:status": ModuleConfigurationValidateStatusEvent

    Status updates for validation (module → host).

    "module:configuration:plan:request": ModuleConfigurationPlanRequestEvent<C>

    Configuration planning request (host → module).

    "module:configuration:plan:response": ModuleConfigurationPlanResponseEvent<C>

    Configuration planning response (module → host).

    "module:configuration:plan:status": ModuleConfigurationPlanStatusEvent

    Status updates for planning (module → host).

    "module:configuration:commit": ModuleConfigurationCommitEvent<C>

    Commit a config as "active" (host → module).

    "module:configuration:commit:status": ModuleConfigurationCommitStatusEvent

    Status updates for commit (module → host).

    "module:configuration:configured": ModuleConfigurationConfiguredEvent<C>

    Configuration fully applied and active (module → host).

    "module:contribute:capability:offer": ModuleContributeCapabilityOfferEvent

    Capability offer emitted after module configuration.

    "module:contribute:capability:configuration:needed": ModuleContributeCapabilityConfigurationNeededEvent<
        C,
    >

    Capability needs configuration before activation.

    "module:contribute:capability:configuration:validate:request": ModuleContributeCapabilityConfigurationValidateRequestEvent<
        C,
    >
    "module:contribute:capability:configuration:validate:response": ModuleContributeCapabilityConfigurationValidateResponseEvent<
        C,
    >
    "module:contribute:capability:configuration:validate:status": ModuleContributeCapabilityConfigurationValidateStatusEvent
    "module:contribute:capability:configuration:plan:request": ModuleContributeCapabilityConfigurationPlanRequestEvent<
        C,
    >
    "module:contribute:capability:configuration:plan:response": ModuleContributeCapabilityConfigurationPlanResponseEvent<
        C,
    >
    "module:contribute:capability:configuration:plan:status": ModuleContributeCapabilityConfigurationPlanStatusEvent
    "module:contribute:capability:configuration:commit": ModuleContributeCapabilityConfigurationCommitEvent<
        C,
    >
    "module:contribute:capability:configuration:commit:status": ModuleContributeCapabilityConfigurationCommitStatusEvent
    "module:contribute:capability:configuration:configured": ModuleContributeCapabilityConfigurationConfiguredEvent<
        C,
    >
    "module:contribute:capability:activated": ModuleContributeCapabilityActivatedEvent
    "module:status:change": ModuleStatusChangeEvent

    Request a phase transition (module → host).

    "module:configure": ModuleConfigureEvent<C>

    Push configuration down to module (host → module).

    "module:consumer:register": ModuleConsumerRegisterEvent

    Register the current module instance as a consumer for an event or event group.

    "module:consumer:unregister": ModuleConsumerUnregisterEvent

    Unregister the current module instance from an event consumer registration.

    "ui:configure": UiConfigureEvent<C>
    "input:text:voice": WebSocketEventInputTextVoice
    "output:gen-ai:chat:tool-call": OutputGenAiChatToolCallEvent
    "output:gen-ai:chat:message": OutputGenAiChatMessageEvent
    "output:gen-ai:chat:complete": OutputGenAiChatCompleteEvent
    "spark:notify": SparkNotifyEvent

    Spark used for allowing agents in a network to raise an event toward the other destinations (e.g. character).

    DO:

    • Use notify for episodic events (alarms/pings/reminders) with minimal payload.
    • Use command for high-level intent; let sub-agents translate into their own state machines.
    • Use emit for ack/progress/completion; include ids for tracing/dedupe.
    • Route via destinations; keep payloads small; use context:update for richer ideas.
    • Dedupe/log via id/eventId for observability.

    DOn't:

    • Stream high-frequency telemetry here (keep a separate channel).
    • Stuff large blobs into payload/contexts; prefer refs/summaries.
    • Assume exactly-once; add retry/ack on critical paths. You may rely on id/eventId for dedupe.
    • Allow untrusted agents to broadcast without auth/capability checks.

    Examples:

    • Minecraft attack/death: kind=alarm, urgency=immediate (fast bubble-up). e.g., fromAgent='minecraft', headline='Under attack by witch', payload includes hp/location/gear.
    • Cat bowl empty from HomeAssistant: kind=alarm, urgency=soon.
    • IM/email "read now": kind=ping, urgency=immediate.
    • Action Required email: kind=reminder, urgency=later.

    destinations controls routing (e.g. ['character'], ['character','minecraft-agent']).

    "spark:emit": SparkEmitEvent

    Acknowledgement/progress/state for a spark or command (bidirectional). Examples:

    • Character: state=working, note="Seen it, responding".
    • Sub-agent: state=done, note="Healed and safe".
    • Sub-agent: state=blocked/dropped with note when it cannot comply.
    • Minecraft: state=working, note="Pillared up; healing" in reply to a command.
    "spark:command": SparkCommandEvent

    Character issues instructions or context to a sub-agent. interrupt: force = hard preempt; soft = merge/queue. Examples:

    • Witch attack: interrupt=force, priority=critical, intent=action with options (aggressive/cautious). e.g., options to block/retreat vs push with shield/sword, with fallback steps.
    • Prep plan: interrupt=soft, priority=high, intent=plan with steps/fallbacks.
    • Contextual hints: intent=context with contextPatch ideas/hints.
    "transport:connection:heartbeat": TransportConnectionHeartbeatEvent
    "context:update": ContextUpdateEvent