Skip to content

Comments

Padatious doesn't need to run 3 times.#3

Closed
Joanguitar wants to merge 26 commits intoHelloChatterbox:devfrom
Joanguitar:dev
Closed

Padatious doesn't need to run 3 times.#3
Joanguitar wants to merge 26 commits intoHelloChatterbox:devfrom
Joanguitar:dev

Conversation

@Joanguitar
Copy link
Contributor

Very simple trick to reuse the intent match result for Padatious when called multiple times.

JarbasAl and others added 24 commits September 9, 2021 00:32
the generic enclosure partially handled some onboarding functions that dont belong there, in HolmesV the generic enclosure becomes essentially the GUI websocket service and no longer handles onboarding functionality

Fixes the readiness check to include pairing check, only report mycroft.ready after device is paired

HolmesV is meant to run in a modular fashion and might not have all services, this commit makes enclosure report ready after a timeout. A proper refactor is needed but breaks mycroft-core compatibility so it is most likely a WONTFIX. At least reduces the log spam... mycroft-core will wait forever and throw exceptions if not every service is loaded

The only possible issue here is a delayed mycroft.ready message, mycroft-core considers itself ready if all services are running and before pairing, HolmesV waits until they all load, but if they dont all load it sends the ready signal anyway after timeout, chatterbox handles this fine and its not critical 🤷

authored-by: jarbasai <jarbasai@mailfence.com>
authored-by: jarbasai <jarbasai@mailfence.com>
- allow setting name of base XDG folder (rename "mycroft")
   - multiple "cores" can co exist now, each with it's own skills folder and config files
- allow setting location and name of .conf files
- allow enabling/disabling XDG support
- optional XDG (configurable, ensure backwards compat)
- dont auto create xdg paths (this was triggering some race conditions that killed the whole process when multiple places attempted to create the folder at same time, a simple string definition should not be creating directories)
- make cache respect xdg
- document "cache_path" in mycroft.conf

fix/set RemoteConf path to cache path

- the property can be used like the regular LocalConf object it subclasses

authored-by: jarbasai <jarbasai@mailfence.com>
- feat/get_track_length
- feat/set_playback_time
- feat/get_playback_time
- patch/audioservice_timedelta
- allow loading of existing cached files without forcing a mimic2 download
ensures intents have all original metadata unless overridden by the intent match

this is useful to keep around the "utterances" key and "lang" keys, together with any additional metadata from pre-intent stage. this also means intent handlers always get at least the same info that converse() does
experimental config option to not require the pause between "hey mycroft" and actually issuing an order
initial experiments for a WIP skill permissions model

converse:
- configurable default timeout
- timeout override per skill
- configurable max consecutive number of skill activations
- max consecutive number of skill activations override per skill

fallback:

- fallback skill priority override (user defines fallback order)
- no fallback priority limit (can go above 100 now)
   * No hard limit at priority 100, while not officially supported mycroft-lib can handle fallback priorities up to 999
- make stop handler and handle_collect_resting use .reply
- add on_handler_error callback for skill handlers
- ensures all messages sent by skills use .forward
- ensures all eventscheduler methods use .forward and .reply as appropriate, tie instances to parent skill
- make mycroft.mic.listen from get_response use .reply
- ensure message.context always includes skill_id
ensures that language is always passed along from utterance to intents, instead of assuming a global monolithic self.lang parameter. Every bus message can now request/inform about a specific language

allows users to define secondary_languages in the .conf

those secondary language resources will also be loaded and used as appropriate (when utterance is tagged)

integrates with chatterbox wakeword2lang support and also with the hivemind voice satellite
when loading resources check for all language code variations and returns best path

if lang is set to pt-pt but only pt-br resources exist, those will be loaded instead of skill failing

changing language to en-gb should load british dialect variations if available, but en-us should still be used if en-gb missing! It's not a good enough reason to fail completely, this can be device breaking and greatly impacts user experience

unmerged original PR - MycroftAI/mycroft-core#1335
Add check for duplicate adapt intents

There are two cases, duplicated named intent and duplicated anonymous intent.

A named intent will cause a ValueError exception notifying the skill
author that there is a collision.

An anonymous intent will silently derive a new name and use that
instead of the default generated one.

Make enable/disable intent handle the new exception

The enable/disable intent did not mark an intent as detached, instead it
remained in the list of intents after disabling in the IntentServiceInterface
to be retrieved when the intent should be re-enabled.

This moves detached intents into a list of detached intents to so they
won't cause the double enable exception.

Add tests for intent collisions
helps sending the other bus events from intent handling in the proper ordering, often intent.handler.complete message comes in too early
- self.lang now always reflects "lang" that came in the bus message
- deprecate dig_for_lang
Improves accuracy since only lang specific intents are taken into account now

If the utterance's language is not loaded but the skill has the files for the dialog the renderer will load these and answer using the original message's lang.

- Multiple intent service for each lang
- make the dialog_renderer load lang resources on demand
- Remove fallback to en-us for missing resource files
- track all pages being displayed by skill
- ensure bus exists before trying to emit messages

this should avoid most of the error logs during skill shutdown and reload
Adds automated testing of setup.py builds and pip installation with all valid extras to check for any dependency conflicts
Modifies requirements to include mycroft-messagebus-client==0.9.1 which should still be compatible
New class PadatiousMatcher can be called multiple times but only computes the match and the confidence the first time it is called.
This is to avoid computational redundancy.
@Joanguitar
Copy link
Contributor Author

I don't know if it's placebo effect but I feel like with this change the speed in which my HolmesV handles fallbacks is much faster, there's no change for normal skills because multiple padatious intent matching processes are only run when a fallback happens, the lower the fallback the more padatious intent matches run.

@JarbasAl JarbasAl force-pushed the dev branch 3 times, most recently from b45a476 to 9a88e69 Compare September 21, 2021 23:27
@JarbasAl
Copy link
Contributor

I missed this PR, rebased and merged via b0f463c

thanks!

@JarbasAl JarbasAl closed this Oct 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants