Repository navigation
feat: send an intent's .required keywords on its registration - #703
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
The code stars have aligned. Here's the update. ✨I've aggregated the results of the automated checks for this PR below. 📋 Repo HealthEnsuring the repository remains a happy place. 😊 ✅ All required files present. Latest Version: ✅ 📡 Channel Compat — testingChecking the boxes and crossing the T's. 🖋️ 🚧 Channel unresolvable with this checkout — the repo's dependency floors exceed what the channel pins (fleet finding; see the install log). Constraints: https://raw.githubusercontent.com/OpenVoiceOS/OpenVoiceOS/main/constraints-testing.txt 🔍 LintThe automated results are now available for your perusal. 📂 ❌ ruff: issues found in 107 file(s) — see job log 📡 Channel Compat — stableI've gathered the facts for your review. 📖 🚧 Channel unresolvable with this checkout — the repo's dependency floors exceed what the channel pins (fleet finding; see the install log). Constraints: https://raw.githubusercontent.com/OpenVoiceOS/OpenVoiceOS/main/constraints-stable.txt 🔒 Security (pip-audit)I've checked for any insecure file permissions. 📂
🔨 Build TestsI've checked the welds on your new features. 👨🏭 ✅ All versions pass
⚖️ License CheckVerifying the source of all binary files. 💾 ✅ No license violations found. Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed. Built by scripts, maintained by community 🤝 |
|
#414 should probably be finished first and this one refactored on top |
7514e77 to
7f8d03e
Compare
7f8d03e to
dea3f40
Compare
register_intent_file loads the <intent>.required file next to each .intent, for each language, and sends its expanded keywords as required_keywords (OVOS-INTENT-2 §4.5, OVOS-INTENT-4 §6.1). The field rides both the ovos.intent.register.template topic and the legacy padatious:register_intent topic. An intent without the file sends an empty list. The file loads with the .blacklist loader, so alternatives expand and an inline <name> takes the values of the sibling .voc. The keywords are part of the stored registration, so a change to them alone is sent again. No required_slots are derived or sent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dea3f40 to
a8190c9
Compare
What changed
register_intent_fileloads the<intent>.requiredfile next to each.intent, for each language. It sends the expanded keywords asrequired_keywordson both registration topics:ovos.intent.register.template(OVOS-INTENT-4 §6.1, as proposed in feat:skilljson and homescreen #283);padatious:register_intent, passed throughemit_legacy_register_templatein the same way asslot_blacklist.An intent without the file sends an empty list, which means no requirement. The file loads with the
.blacklistloader: lines are lowercased,(a|b)and[x]expand, and an inline<name>takes its values from the sibling.voc. The keywords are part of the stored registration, so a change to the keywords alone is sent again.A
.requiredfile never fillsrequired_slots: required keywords and required slots are separate declarations.docs/resource-files.mddescribes.requiredand adds the missing.blacklistrow.What it needs from the reader
A review and a merge decision. The new keyword argument is optional, so existing callers do not change. The engine side is OpenVoiceOS/ovos-m2v-pipeline#308, ovos-padatious-pipeline-plugin#189 and padacioso#124. The padatious and padacioso changes read the key from both topics. A legacy payload without the key would reset their keywords to empty.
Evidence
test/unittests/test_required_file.pyon origin/dev sourcetest_changed_keywords_re_register, and 4 subtests (both topics) of the per-locale and empty-list testspadatious:register_intentsubteststest_changed_keywords_re_register, both topics)test/unittestsandtest/end2endThe skip is
test_locale_lookup.py:452, which skips under an editable install. It also skips on dev.test_no_required_slots_are_sentpasses on dev too. It guards that a.requiredfile leavesrequired_slotsempty on both topics.Three tests in
test/unittests/skills/test_base.pyand two intest/unittests/test_intent_service_interface.pycompare the exact registration call or legacy payload. Their expected values now includerequired_keywords=[].Combined check: one venv with this branch and #308 installed editable, ovos-core 3.7.5a1, ovoscope 1.12.1a1 and ovos-utterance-normalizer 0.2.6a1.
get_prototype_minicroft(["ovos-skill-wikihow.openvoiceos"], lang="en-US")with ovos-skill-wikihow from its dev branch stored["wikihow", "wiki how"]for the en-USwikihowintent.At the default floor (0.56) the second utterance gets no match on dev either: it scores 0.5009. With both branches, the
.requiredcheck drops it before the threshold.Verified
Verified by a model re-run, not by a human. The counts and routing results come from executed runs against origin/dev at b8ed41c.
🤖 Generated with Claude Code