COMMON-QUERY-1: common query pipeline plugin specification#40
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThis PR introduces a complete specification for the OVOS common query pipeline plugin, a scatter-gather pure matcher that broadcasts questions to registered skills, collects responses, filters by confidence and denylists, and dispatches the highest-confidence skill result. ChangesOVOS Common Query Plugin Specification
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related issues
Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@common-query.md`:
- Around line 512-525: The fenced code block showing the session.pipeline array
lacks a language tag and triggers MD040; update the block by adding an
appropriate language identifier (e.g., yaml) to the opening fence so the block
containing session.pipeline and entries like "stop_high", "converse",
"template_high", "keyword_high", "common_query", "template_medium",
"keyword_medium", "fallback_medium", and "fallback_low" is labeled (for example
```yaml) to satisfy markdown linting and CI.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
| ``` | ||
| session.pipeline: [ | ||
| "stop_high", # interrupt | ||
| "converse", # active-handler poll | ||
| "template_high", # registered intents (high) | ||
| "keyword_high", # registered intents (high) | ||
| "common_query", # scatter-gather question answering | ||
| "template_medium", | ||
| "keyword_medium", | ||
| ... | ||
| "fallback_medium", | ||
| "fallback_low" | ||
| ] | ||
| ``` |
There was a problem hiding this comment.
Add a language to the fenced code block to satisfy markdown linting.
Line 512 uses an unlabeled fenced block, which triggers MD040 and may fail docs CI.
Proposed fix
-```
+```yaml
session.pipeline: [
"stop_high", # interrupt
"converse", # active-handler poll
"template_high", # registered intents (high)
"keyword_high", # registered intents (high)
"common_query", # scatter-gather question answering
"template_medium",
"keyword_medium",
...
"fallback_medium",
"fallback_low"
]</details>
<details>
<summary>🧰 Tools</summary>
<details>
<summary>🪛 markdownlint-cli2 (0.22.1)</summary>
[warning] 512-512: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
</details>
</details>
<details>
<summary>🤖 Prompt for AI Agents</summary>
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @common-query.md around lines 512 - 525, The fenced code block showing the
session.pipeline array lacks a language tag and triggers MD040; update the block
by adding an appropriate language identifier (e.g., yaml) to the opening fence
so the block containing session.pipeline and entries like "stop_high",
"converse", "template_high", "keyword_high", "common_query", "template_medium",
"keyword_medium", "fallback_medium", and "fallback_low" is labeled (for example
|
Merge-readiness: resolved. Conflicts resolved (commit 2154c4d):
No semantic flags. Cross-references in CI: no workflow files in repo. Note on #55: If either filename-rename PR merges first, the |
…isten field Consolidates the PIPELINE-1 companion edits previously bundled into the union-slots (#56), FALLBACK-1 (#39), COMMON-QUERY-1 (#40) and AUDIO-1 (#38) feature PRs into a single one-file change to ovos-pipeline-1.md. - §6.1/§6.2 — orchestrator backstop for required_slots (INTENT-3 §5.3): the orchestrator treats a Match as declined if any required slot is absent. Second line of defense behind engine-side enforcement. - §7.3 — reserve intent_names "fallback" (FALLBACK-1 §6.3) and "common_query" (COMMON-QUERY-1 §3). COMMON-QUERY-1 asserted the reservation but never registered the row; this closes that gap. - §9.6 — add the OPTIONAL listen field to ovos.utterance.speak; the output-side behaviour is owned by AUDIO-1. All additions are backwards-compatible. PIPELINE-1 is already V2 (its namespaced topics replace the pre-spec names); these refinements do not change the class, so the Version stays 2. Adds the missing PIPELINE-1 CHANGELOG section. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
a95b7e9 to
5163c1a
Compare
5163c1a to
eafea4a
Compare
Companion issue: #41
Summary
Defines the common query pipeline plugin — a scatter-gather matcher that identifies question-like utterances, broadcasts them to registered question-answering skills, collects responses within a timed window, selects the best answer by confidence, and dispatches the winning skill to speak it.
What the spec covers
Match.skill_idis the winning skill, never the plugin's ownpipeline_id)ovos.common_query.questionbroadcast, timed collection window, early termination,searchingextension protocol<winning_skill_id>:common_query.questionovos.common_query.ping/ovos.common_query.pongKey design decisions
common_query.questionis a skill-owned intent name, not a reserved name — skills register it via INTENT-4 and receive dispatch normallysession.blacklisted_skillsexcludes skills from the scatter-gather pool