fix: resolve inline <voc> references when loading .intent/.blacklist#455
Conversation
Per OVOS-INTENT-1 §3.7 an inline <name> reference in a .intent or
.blacklist file must expand in place from the sibling vocabulary of that
name. The loader passed such lines straight to the bracket expander, so
<name> survived as literal text and the intent never matched.
Build a {name: members} map from every sibling .voc in the locale tree
(user > skill > workshop precedence) and delegate the §3.7 resolution to
ovos_spec_tools.inline_keywords before expansion. Files without inline
references are unaffected.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 48 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✨ 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 |
Hello there! I've processed your latest changes. 🌊I've aggregated the results of the automated checks for this PR below. 🔍 LintThe results are fresh out of the pipeline. 🏗️ ❌ ruff: issues found — see job log 📋 Repo HealthScanning for any signs of 'comment' bad breath. 🌬️ ✅ All required files present. Latest Version: ✅ ⚖️ License CheckChecking the terms and conditions of your code. 📝 ✅ No license violations found. Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed. 🔨 Build TestsTesting the recipe! Did the build turn out okay? 👨🍳 ✅ All versions pass
Powered by OVOS scripts and a bit of magic. ✨ |
Loading a
.intentor.blacklistfile with an inline<name>vocabulary reference (OVOS-INTENT-1 §3.7) currently fails: the resource loader hands the line straight to the bracket expander, so<name>survives as literal text and the intent never matches the sibling vocabulary.Fix
SkillResources._locale_vocabularies()builds a{name: members}map from every sibling.vocin this language's locale tree (user > skill > workshop precedence).IntentFile.load/BlacklistFile.loadgain avocabulariesattribute. When a line contains<name>, the §3.7 resolution is delegated toovos_spec_tools.inline_keywords(rewrites<name>→(a|b|c)) before the existing bracket expansion. Lines without inline references are untouched — no behavior change for existing skills.Tests
test/unittests/test_inline_vocab_refs.py: afoo.intentwith<thing>+ siblingthing.voc, and abar.blacklistwith<pronoun>+pronoun.voc, both expand to the vocabulary members; plus a no-inline regression case. Red before, green after.Relation to #414
PR #414 (
feat/drop-resource-files-usage) routes all resource loading throughovos_spec_tools.LocaleResourcesand would resolve inline refs there too, but it is a large deprecation-bearing refactor still open. This is the smallest dev-targeted fix that unblocks skills on current dev now; #414 subsumes it.🤖 Generated with Claude Code