diff --git a/CHANGELOG.md b/CHANGELOG.md index e248afdf..88468165 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,36 +1,12 @@ # Changelog -## [7.0.10a1](https://github.com/OpenVoiceOS/ovos-workshop/tree/7.0.10a1) (2025-11-09) +## [8.0.1a1](https://github.com/OpenVoiceOS/ovos-workshop/tree/8.0.1a1) (2025-12-16) -[Full Changelog](https://github.com/OpenVoiceOS/ovos-workshop/compare/7.0.9a1...7.0.10a1) +[Full Changelog](https://github.com/OpenVoiceOS/ovos-workshop/compare/8.0.0...8.0.1a1) **Merged pull requests:** -- fix: deprecations, imports, unittests [\#373](https://github.com/OpenVoiceOS/ovos-workshop/pull/373) ([JarbasAl](https://github.com/JarbasAl)) - -## [7.0.9a1](https://github.com/OpenVoiceOS/ovos-workshop/tree/7.0.9a1) (2025-07-08) - -[Full Changelog](https://github.com/OpenVoiceOS/ovos-workshop/compare/7.0.8a1...7.0.9a1) - -**Merged pull requests:** - -- fix: ocp skills [\#365](https://github.com/OpenVoiceOS/ovos-workshop/pull/365) ([JarbasAl](https://github.com/JarbasAl)) - -## [7.0.8a1](https://github.com/OpenVoiceOS/ovos-workshop/tree/7.0.8a1) (2025-07-08) - -[Full Changelog](https://github.com/OpenVoiceOS/ovos-workshop/compare/7.0.7a1...7.0.8a1) - -**Merged pull requests:** - -- fix: rm \_\_del\_\_ method [\#368](https://github.com/OpenVoiceOS/ovos-workshop/pull/368) ([JarbasAl](https://github.com/JarbasAl)) - -## [7.0.7a1](https://github.com/OpenVoiceOS/ovos-workshop/tree/7.0.7a1) (2025-06-21) - -[Full Changelog](https://github.com/OpenVoiceOS/ovos-workshop/compare/7.0.6...7.0.7a1) - -**Merged pull requests:** - -- refactor/remove the compatibility layer with MycroftSkill in the skill launcher [\#362](https://github.com/OpenVoiceOS/ovos-workshop/pull/362) ([JarbasAl](https://github.com/JarbasAl)) +- fix: standalone skills wait\_for\_core [\#375](https://github.com/OpenVoiceOS/ovos-workshop/pull/375) ([JarbasAl](https://github.com/JarbasAl)) diff --git a/downstream_report.txt b/downstream_report.txt index 40a43300..0037e3af 100644 --- a/downstream_report.txt +++ b/downstream_report.txt @@ -1,47 +1,47 @@ -ovos-workshop==7.0.9a1 -├── ovos-skill-screenshot==0.0.7 [requires: ovos-workshop] -├── ovos-skill-fallback-unknown==0.1.9 [requires: ovos-workshop>=6.0.0,<8.0.0] -├── ovos-skill-parrot==0.1.26a1 [requires: ovos-workshop>=7.0.0,<8.0.0] -├── ovos-skill-application-launcher==0.5.14 [requires: ovos-workshop>=6.0.0,<8.0.0] -├── ovos-skill-icanhazdadjokes==0.3.7 [requires: ovos-workshop>=0.0.15,<8.0.0] -├── ovos_padatious==1.4.3 [requires: ovos-workshop>=0.1.7,<8.0.0] -├── ovos_common_query_pipeline_plugin==1.1.9 [requires: ovos-workshop>=0.1.7,<8.0.0] -├── ovos-skill-laugh==0.2.3 [requires: ovos-workshop] -├── ovos-skill-fuster-quotes==0.0.4 [requires: ovos-workshop] -├── ovos-skill-local-media==0.2.13a1 [requires: ovos-workshop>=2.4.0,<8.0.0] -├── ovos-skill-pyradios==0.1.5 [requires: ovos-workshop>=0.0.16,<8.0.0] -├── ovos_core==2.1.1 [requires: ovos-workshop>=7.0.6,<8.0.0] +ovos_workshop==7.0.10a1 +├── ovos-skill-fallback-unknown==0.1.9 [requires: ovos_workshop>=6.0.0,<8.0.0] +├── ovos-skill-parrot==0.1.26a1 [requires: ovos_workshop>=7.0.0,<8.0.0] +├── ovos-skill-speedtest==0.3.7a2 [requires: ovos_workshop>=0.0.12,<8.0.0] +├── ovos-skill-icanhazdadjokes==0.3.7 [requires: ovos_workshop>=0.0.15,<8.0.0] +├── ovos_padatious==1.4.3 [requires: ovos_workshop>=0.1.7,<8.0.0] +├── ovos-skill-screenshot==0.0.8a3 [requires: ovos_workshop] +├── ovos_common_query_pipeline_plugin==1.1.9 [requires: ovos_workshop>=0.1.7,<8.0.0] +├── ovos_core==2.1.2a1 [requires: ovos_workshop>=7.0.6,<9.0.0] │ └── ovoscope==0.7.2 [requires: ovos_core>=2.0.4a2] -├── ovos_skill_ddg==0.3.6 [requires: ovos-workshop>=3.4.0,<8.0.0] -├── ovos-skill-date-time==1.1.6a1 [requires: ovos-workshop>=0.0.16,<8.0.0] -├── ovos-skill-dictation==0.2.20a1 [requires: ovos-workshop>=7.0.0,<8.0.0] -├── ovos-skill-camera==1.0.5a6 [requires: ovos-workshop>=0.0.12] -├── ovos-skill-ip==0.2.8 [requires: ovos-workshop] -├── ovos_m2v_pipeline==0.0.7 [requires: ovos-workshop>=0.1.7,<8.0.0] -├── ovos-skill-weather==1.0.8a3 [requires: ovos-workshop>=2.2.0,<8.0.0] -├── ovos_adapt_parser==1.0.9 [requires: ovos-workshop>=0.1.7,<8.0.0] -├── ovos-skill-cmd==0.2.11 [requires: ovos-workshop>=0.0.15,<8.0.0] -├── ovos-skill-naptime==0.3.16a1 [requires: ovos-workshop>=0.0.15,<8.0.0] -├── ovos_plugin_common_play==1.2.2a1 [requires: ovos-workshop>=2.4.2,<8.0.0] -├── ovos-skill-volume==0.1.17a3 [requires: ovos-workshop>=0.0.15,<8.0.0] -├── ovos-skill-personal==0.1.20a1 [requires: ovos-workshop>=0.0.15,<8.0.0] -├── ovos-skill-number-facts==0.1.12 [requires: ovos-workshop>=0.0.15,<8.0.0] -├── ovos-skill-randomness==0.1.2 [requires: ovos-workshop] -├── ovos-skill-alerts==0.1.28a1 [requires: ovos-workshop>=7.0.0,<8.0.0] -├── ovos-skill-speedtest==0.3.7a1 [requires: ovos-workshop>=0.0.12,<8.0.0] -├── ovos-skill-iss-location==0.2.16 [requires: ovos-workshop>=0.0.12,<8.0.0] -├── ovos-skill-somafm==0.1.6a1 [requires: ovos-workshop>=0.0.16] -├── ovos-skill-homescreen==3.0.3 [requires: ovos-workshop>=2.4.0,<8.0.0] -├── ovos-skill-wikihow==0.3.3 [requires: ovos-workshop>=3.4.0a1,<8.0.0] -├── ovos-skill-word-of-the-day==0.2.0 [requires: ovos-workshop] -├── ovos-skill-wolfie==0.5.8 [requires: ovos-workshop>=3.4.0a1,<8.0.0] -├── ovos-skill-diagnostics==0.0.8 [requires: ovos-workshop>=0.0.12] -├── ovos_skill_wordnet==0.2.6 [requires: ovos-workshop>=3.3.0,<8.0.0] -├── ovos-skill-color-picker==0.0.7 [requires: ovos-workshop] -├── ovos-skill-news==0.4.6a1 [requires: ovos-workshop>=0.0.16,<8.0.0] -├── ovos_ocp_pipeline_plugin==1.1.18 [requires: ovos-workshop>=0.1.7,<8.0.0] -├── ovos-skill-confucius-quotes==0.1.13 [requires: ovos-workshop>=0.0.15,<8.0.0] -├── ovos-skill-youtube-music==0.1.7 [requires: ovos-workshop>=0.0.16,<8.0.0] -├── ovos-skill-wikipedia==0.8.13 [requires: ovos-workshop>=3.4.0,<8.0.0] -├── ovos-skill-moviemaster==0.0.12 [requires: ovos-workshop>=0.0.11,<8.0.0] -└── ovos-skill-days-in-history==0.3.11 [requires: ovos-workshop>=3.1.0,<8.0.0] +├── ovos-skill-laugh==0.2.3 [requires: ovos_workshop] +├── ovos-skill-fuster-quotes==0.0.4 [requires: ovos_workshop] +├── ovos-skill-local-media==0.2.13a1 [requires: ovos_workshop>=2.4.0,<8.0.0] +├── ovos-skill-pyradios==0.1.5 [requires: ovos_workshop>=0.0.16,<8.0.0] +├── ovos_skill_ddg==0.3.6 [requires: ovos_workshop>=3.4.0,<8.0.0] +├── ovos-skill-date-time==1.1.6a1 [requires: ovos_workshop>=0.0.16,<8.0.0] +├── ovos_skill_wordnet==0.2.7a1 [requires: ovos_workshop>=3.3.0,<8.0.0] +├── ovos-skill-naptime==0.3.16a2 [requires: ovos_workshop>=0.0.15,<8.0.0] +├── ovos-skill-ip==0.2.8 [requires: ovos_workshop] +├── ovos_m2v_pipeline==0.0.7 [requires: ovos_workshop>=0.1.7,<8.0.0] +├── ovos-skill-weather==1.0.8a3 [requires: ovos_workshop>=2.2.0,<8.0.0] +├── ovos_adapt_parser==1.0.9 [requires: ovos_workshop>=0.1.7,<8.0.0] +├── ovos-skill-personal==0.1.20a3 [requires: ovos_workshop>=0.0.15,<8.0.0] +├── ovos-skill-cmd==0.2.11 [requires: ovos_workshop>=0.0.15,<8.0.0] +├── ovos-skill-diagnostics==0.0.9a1 [requires: ovos_workshop>=0.0.12] +├── ovos_plugin_common_play==1.2.2a1 [requires: ovos_workshop>=2.4.2,<8.0.0] +├── ovos-skill-volume==0.1.17a3 [requires: ovos_workshop>=0.0.15,<8.0.0] +├── ovos-skill-number-facts==0.1.12 [requires: ovos_workshop>=0.0.15,<8.0.0] +├── ovos-skill-randomness==0.1.2 [requires: ovos_workshop] +├── ovos-skill-alerts==0.1.28a1 [requires: ovos_workshop>=7.0.0,<8.0.0] +├── ovos-skill-iss-location==0.2.16 [requires: ovos_workshop>=0.0.12,<8.0.0] +├── ovos-skill-somafm==0.1.6a1 [requires: ovos_workshop>=0.0.16] +├── ovos-skill-application-launcher==0.5.15a1 [requires: ovos_workshop>=6.0.0,<8.0.0] +├── ovos-skill-dictation==0.2.20a3 [requires: ovos_workshop>=7.0.0,<8.0.0] +├── ovos-skill-homescreen==3.0.3 [requires: ovos_workshop>=2.4.0,<8.0.0] +├── ovos-skill-wikihow==0.3.3 [requires: ovos_workshop>=3.4.0a1,<8.0.0] +├── ovos-skill-word-of-the-day==0.2.0 [requires: ovos_workshop] +├── ovos-skill-wolfie==0.5.8 [requires: ovos_workshop>=3.4.0a1,<8.0.0] +├── ovos-skill-color-picker==0.0.7 [requires: ovos_workshop] +├── ovos-skill-news==0.4.6a1 [requires: ovos_workshop>=0.0.16,<8.0.0] +├── ovos_ocp_pipeline_plugin==1.1.18 [requires: ovos_workshop>=0.1.7,<8.0.0] +├── ovos-skill-confucius-quotes==0.1.13 [requires: ovos_workshop>=0.0.15,<8.0.0] +├── ovos-skill-camera==1.0.5a7 [requires: ovos_workshop>=0.0.12] +├── ovos-skill-youtube-music==0.1.7 [requires: ovos_workshop>=0.0.16,<8.0.0] +├── ovos-skill-wikipedia==0.8.13 [requires: ovos_workshop>=3.4.0,<8.0.0] +├── ovos-skill-moviemaster==0.0.12 [requires: ovos_workshop>=0.0.11,<8.0.0] +└── ovos-skill-days-in-history==0.3.11 [requires: ovos_workshop>=3.1.0,<8.0.0] diff --git a/ovos_workshop/skill_launcher.py b/ovos_workshop/skill_launcher.py index fb47e6ad..e9eec9b2 100644 --- a/ovos_workshop/skill_launcher.py +++ b/ovos_workshop/skill_launcher.py @@ -1,5 +1,6 @@ import os import sys +import threading from os.path import isdir from inspect import isclass from types import ModuleType @@ -534,21 +535,27 @@ def _connect_to_core(self): self.bus.run_in_thread() self.bus.connected_event.wait() - LOG.debug("checking skills service status") - response = self.bus.wait_for_response( - Message(f'mycroft.skills.is_ready', - context={"source": "workshop", "destination": "skills"})) - if response and response.data['status']: - LOG.info("connected to core") - self.load_skill() - else: - LOG.warning("Skills service not ready yet. Load on ready event.") - self.bus.on("mycroft.ready", self.load_skill) self.bus.on("skillmanager.activate", self.do_load) self.bus.on("skillmanager.deactivate", self.do_unload) self.bus.on("skillmanager.keep", self.do_unload) + def wait_for_core(t=1): + LOG.debug("checking skills service status") + response = self.bus.wait_for_response( + Message('mycroft.skills.is_ready', + context={"source": self.skill_id, "destination": "skills"})) + if response is not None and response.data.get('status'): + LOG.info("connected to core") + self.load_skill() + return + + LOG.warning(f"ovos-core not yet ready. Waiting {t} seconds until next skill loading attempt") + threading.Event().wait(t) + wait_for_core(min(60, t*2)) + + wait_for_core() + def load_skill(self, message: Optional[Message] = None): """ Load the skill associated with this SkillContainer instance. @@ -635,6 +642,10 @@ def _launch_script(): skill_id = sys.argv[1] skill_directory = sys.argv[2] skill = SkillContainer(skill_id, skill_directory) + elif os.environ.get("SKILL_ID"): + # allow launching without args if env var is set, might be useful for containers + skill_id = os.environ["SKILL_ID"] + skill = SkillContainer(skill_id) else: print("USAGE: ovos-skill-launcher {skill_id} [path/to/my/skill_id]") raise SystemExit(2) @@ -642,3 +653,5 @@ def _launch_script(): skill.run() +if __name__ == "__main__": + _launch_script() \ No newline at end of file diff --git a/ovos_workshop/version.py b/ovos_workshop/version.py index 8a0cf062..34b4f27a 100644 --- a/ovos_workshop/version.py +++ b/ovos_workshop/version.py @@ -1,6 +1,6 @@ # START_VERSION_BLOCK VERSION_MAJOR = 8 VERSION_MINOR = 0 -VERSION_BUILD = 0 -VERSION_ALPHA = 0 +VERSION_BUILD = 1 +VERSION_ALPHA = 1 # END_VERSION_BLOCK