Tracking issue for PR #9 — OVOS-INTENT-4: Intent and Entity Registration Bus Contract
A skill today declares its intents over a tangle of legacy bus topics with no single spec. OVOS-INTENT-4 defines a small fixed set of ovos.intent.* / ovos.entity.* / ovos.skill.* topics covering registration, deregistration, enable / disable, and introspection, under an orchestrator-mediated model.
Architectural model
- The orchestrator is the sole bus consumer of skill-originated registration topics and delegates to engines through an orchestrator-internal interface. Engines do not subscribe to the bus topics defined here.
- Atomic registration — keyword intents register in a single message with
{required, optional, one_of, excluded} arrays of vocabulary descriptors. No racy multi-message sequences.
- Structured identity —
(skill_id, intent_name, lang) triple, not munged strings.
- Skill self-identification on every emission —
Message.context["skill_id"] is the emitter, distinct from any data.skill_id (a subject or filter). The orchestrator enforces presence structurally via dispatch-topic stamping and forward/reply inheritance.
- Orchestrator-owned manifest —
ovos.intent.list / .describe are answered by the orchestrator; skills carry no introspection obligation.
- No central correlation — producers MUST NOT block waiting on a
.response.
- Structured
error_code enum on registration .response.
Out of scope
- Dispatch, match-result notification, the handler-lifecycle trio, and utterance-layer end-markers — defined in OVOS-PIPELINE-1.
- Engine-internal matching semantics.
Tracking issue for PR #9 — OVOS-INTENT-4: Intent and Entity Registration Bus Contract
A skill today declares its intents over a tangle of legacy bus topics with no single spec. OVOS-INTENT-4 defines a small fixed set of
ovos.intent.*/ovos.entity.*/ovos.skill.*topics covering registration, deregistration, enable / disable, and introspection, under an orchestrator-mediated model.Architectural model
{required, optional, one_of, excluded}arrays of vocabulary descriptors. No racy multi-message sequences.(skill_id, intent_name, lang)triple, not munged strings.Message.context["skill_id"]is the emitter, distinct from anydata.skill_id(a subject or filter). The orchestrator enforces presence structurally via dispatch-topic stamping and forward/reply inheritance.ovos.intent.list/.describeare answered by the orchestrator; skills carry no introspection obligation..response.error_codeenum on registration.response.Out of scope