Skip to content

Event

@kindgi/specs/event.schema.json, schema version 1.0.0.

The causal glue between runs. Emitted by kernel, memory, tools, agents, supervisor, HITL. Consumed by subscriptions to trigger new runs or resume in-flight waits. Every event has an ID for idempotent delivery; every subscription is policy-scoped. Delivery is at-least-once with idempotent handlers.

  • id (string, required): Unique event ID. Enables dedup on the consumer side (at-least-once delivery).
  • type (string, required): Dotted event type (e.g. 'run.started', 'run.completed', 'guardrail.violated', 'fact.written', 'entity.deleted', 'tool.invoked', 'fix.proposed', 'approval.requested'). Convention: '<subject>.<past-tense-verb>'.
  • tenantId (string, required): Tenant that owns this event. Cross-tenant delivery is denied by policy.
  • timestamp (string (date-time), required)
  • actor (string): Who emitted this event (agent id, tool id, subsystem name, user id).
  • subject (object): The primary object the event is about.
    • kind (string): Object kind (e.g. 'run', 'agent', 'fact', 'entity', 'tool', 'guardrail').
    • id (string)
  • causedBy (array of string): Zero or more IDs (event IDs or provenance node IDs) that caused this event. Extends the causal DAG across the reactive boundary — an agent that runs because of an event has provenance edges back through the event to its emitter.
  • scope (map of any): Optional additional scoping (project, thread, session). Interpreted by subscriptions.
  • payload (object): Event-type-specific payload. Consumers must tolerate unknown fields for forward compatibility.
  • attributes (map of any): Non-structural annotations useful for filter predicates (e.g. severity, kind hints, feature flags).