aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMalik Talha <talhamalik727x@gmail.com>2023-10-06 23:42:08 +0500
committerMalik Talha <talhamalik727x@gmail.com>2023-10-06 23:42:08 +0500
commit7b4a029168133bbf58c5dfe97e618badfe77b361 (patch)
treeb8f63ff4baec31ba5ca7feb815869b30ccc653ba
parent713efdf66dca8e60c3db1e720a9bb2bd074c40f3 (diff)
Add dependencies for RASA framework
This adds the libraries for the RASA machine learning framework. Bug-AGL: SPEC-4856 Change-Id: I477b09cae8ff51e284b51238cb5940464ea57a51 Signed-off-by: Malik Talha <talhamalik727x@gmail.com>
-rw-r--r--meta-offline-voice-agent/README.md17
-rw-r--r--meta-offline-voice-agent/recipes-nlu/nlu-model/rasa-model-agl_0.1.0.bb19
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-anyio-add-setup-file.patch76
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-exceptiongroup-add-setup-file.patch46
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-magic-filter-add-setup-file.patch72
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-rasa-remove-group-from-poetry-as-its-not-supported.patch23
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-rasa-sdk-remove-group-from-poetry-as-its-not-support.patch31
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-structlog-add-setup-file.patch61
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-aio-pika_8.2.3.bb24
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-aiogram_2.25.1.bb28
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-aiohttp-retry_2.8.3.bb24
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-aiormq_6.4.2.bb22
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-anyio_3.7.1.bb24
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-apscheduler_3.9.1.bb25
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-babel_2.9.1.bb15
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-boto3_1.28.9.bb30
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-botocore_1.31.9.bb26
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-cloudpickle_2.2.1.bb11
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-dask_2022.10.2.bb31
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-exceptiongroup_1.1.2.bb12
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-fbmessenger_6.0.0.bb18
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-fire_0.5.0.bb15
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-fsspec_2023.6.0.bb11
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-google-auth-oauthlib_1.0.0.bb21
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-html5tagger_1.3.0.bb13
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-httptools_0.6.0.bb11
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-jsonpickle_3.0.1.bb13
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-locket_1.0.0.bb11
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-magic-filter_1.0.10.bb14
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-pamqp_3.2.1.bb11
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-partd_1.4.0.bb21
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-pydantic_1.10.9.bb20
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-questionary_1.10.0.bb15
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-randomname_0.1.5.bb18
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-rasa-sdk_3.6.1.bb44
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-rasa_3.6.4.bb81
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-requests-toolbelt_1.0.0.bb15
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-ruamel.yaml.clib_0.2.7.bb11
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-ruamel.yaml_0.17.21.bb15
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-s3transfer_0.6.1.bb24
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic-cors_2.0.1.bb21
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic-jwt_1.8.0.bb15
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic-routing_0.7.2.bb11
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic_21.12.2.bb37
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-slack-sdk_3.21.3.bb14
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-sniffio_1.3.0.bb9
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-structlog-sentry_2.0.3.bb38
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-structlog_23.1.0.bb12
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-tarsafe_0.0.4.bb14
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-terminaltables_3.1.10.bb11
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-toolz_0.12.0.bb11
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-tracerite_1.1.0.bb18
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-twilio_8.2.2.bb27
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-typing-utils_0.1.0.bb14
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-uvloop_0.17.0.bb21
-rw-r--r--meta-offline-voice-agent/recipes-python/python3-rasa/python3-webexteamssdk_1.6.1.bb25
-rw-r--r--templates/feature/agl-offline-voice-agent/50_local.conf.inc20
-rw-r--r--templates/feature/agl-offline-voice-agent/README_feature_agl-offline-voice-agent.md5
58 files changed, 1334 insertions, 8 deletions
diff --git a/meta-offline-voice-agent/README.md b/meta-offline-voice-agent/README.md
index bed8b35e..739654c0 100644
--- a/meta-offline-voice-agent/README.md
+++ b/meta-offline-voice-agent/README.md
@@ -9,25 +9,28 @@ The `meta-offline-voice-agent` is an AGL Layer that enables Offline Speech Recog
- [Build Layer](#build-layer)
- [Test Vosk](#test-vosk)
- [Test Snips](#test-snips)
+ - [Test RASA](#test-rasa)
- [Supported Targets](#supported-targets)
- [Maintainers](#maintainers)
## Introduction
-The `meta-offline-voice-agent` layer integrates the Vosk API and Snips (Inference Only) to provide offline speech recognition and command execution for Automotive Grade Linux. The layer is based on the Kaldi ASR Toolkit, which allows for accurate and efficient speech recognition in the AGL platform, and Snips which provides us with a lightweight Natural Language Intent Engine.
+The `meta-offline-voice-agent` layer integrates the Vosk API, Snips (Inference Only), and RASA to provide offline speech recognition and command execution for Automotive Grade Linux. The layer is based on the Kaldi ASR Toolkit, which allows for accurate and efficient speech recognition in the AGL platform, Snips which provides us with a lightweight Natural Language Intent Engine, and RASA a complete end-to-end ML framework for developing and creating chatbots and voice assistants.
## Layer Status
**Status**: *WIP (Work In Progress)*
-This layer is currently in development and integrates the Vosk, Snips (Inference Only), and RASA libraries. Speech recognition has been verified using test scripts from the [vosk-api python examples](https://github.com/alphacep/vosk-api/tree/master/python/example). Additionally, Snips has undergone testing and verification to ensure its functionality. Currently, work on integrating RASA and command execution is still in progress.
+This layer is currently in development and integrates the Vosk, Snips (Inference Only), and RASA libraries. Speech recognition has been verified using test scripts from the [vosk-api python examples](https://github.com/alphacep/vosk-api/tree/master/python/example). Additionally, both Snips and RASA have undergone testing and verification to ensure their functionality. Currently, work on command execution is still in progress.
## External Dependencies
-This layer does not have any external layer dependency.
+This layer depends on the following external layers:
+- [meta-tensorflow](https://git.yoctoproject.org/meta-tensorflow)
## Working Features
The following features are currently working in the `meta-offline-voice-agent` layer:
- [Vosk API (Python)](https://github.com/alphacep/vosk-api/tree/master/python)
- [Vosk Websocket Server](https://github.com/alphacep/vosk-server/tree/master/websocket)
- [Snips Inference](https://github.com/malik727/snips-inference-agl)
+- [RASA](https://github.com/RasaHQ/rasa)
## Testing Features on AGL
@@ -66,6 +69,14 @@ $ snips-inference parse /usr/share/nlu/snips/model/ -q "your command here"
This is just a sample model and may not be able to handle all types of commands. You can always train your own intent engine model using your custom dataset, for more details on how to do that you can look into the README files of [snips-sdk-agl](https://github.com/malik727/snips-sdk-agl), [snips-model-agl](https://github.com/malik727/snips-model-agl), and [snips-inference-agl](https://github.com/malik727/snips-inference-agl).
+### Test RASA
+In order to test the RASA NLU Intent Engine you can use the sample [pre-trained model](https://github.com/malik727/rasa-model-agl), by default it automatically gets built into the target image when you include this layer. To perform inference using this model you can run the following command inside your target image:
+```shell
+$ rasa shell -m /usr/share/nlu/rasa/models/
+```
+
+This will open an interactive shell where you can issue commands and get related results. This is just a sample model and may not be able to handle all types of commands. You can always train your own RASA intent engine model using your custom dataset by following the official [RASA docs](https://rasa.com/docs/rasa/).
+
## Supported Targets
Currently, the following targets are fully supported:
- QEMU x86-64 (work in progress)
diff --git a/meta-offline-voice-agent/recipes-nlu/nlu-model/rasa-model-agl_0.1.0.bb b/meta-offline-voice-agent/recipes-nlu/nlu-model/rasa-model-agl_0.1.0.bb
new file mode 100644
index 00000000..38e37406
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-nlu/nlu-model/rasa-model-agl_0.1.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Dataset and a pre-trained model for the AGL voice assistant RASA based NLU intent engine."
+HOMEPAGE = "https://github.com/malik727/rasa-model-agl"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2e01060a5557fe6a4b57f5ea6dc048d9"
+
+SRC_URI = " \
+ git://github.com/malik727/rasa-model-agl;protocol=https;branch=main \
+"
+
+PV = "1.0.0+git${SRCPV}"
+SRCREV = "${AUTOREV}"
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}/usr/share/nlu/rasa
+ cp -R ${WORKDIR}/git/* ${D}/usr/share/nlu/rasa/
+}
+
+FILES:${PN} += " /usr/share/nlu/rasa"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-anyio-add-setup-file.patch b/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-anyio-add-setup-file.patch
new file mode 100644
index 00000000..5f44d2d4
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-anyio-add-setup-file.patch
@@ -0,0 +1,76 @@
+From 4a1ad21ba577466ae70a8b6ed6d8c4e12b0cb851 Mon Sep 17 00:00:00 2001
+From: Malik Talha <talhamalik727x@gmail.com>
+Date: Tue, 8 Aug 2023 17:26:30 +0500
+Subject: [PATCH] anyio add setup file
+
+add setup.py to replace build_meta system as its not working properly
+---
+ setup.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 59 insertions(+)
+ create mode 100644 setup.py
+
+diff --git a/setup.py b/setup.py
+new file mode 100644
+index 0000000..f15d18b
+--- /dev/null
++++ b/setup.py
+@@ -0,0 +1,59 @@
++from setuptools import setup, find_packages
++
++setup(
++ name="anyio",
++ description="High level compatibility layer for multiple asynchronous event loop implementations",
++ version="3.7.1",
++ classifiers=[
++ "Development Status :: 5 - Production/Stable",
++ "Intended Audience :: Developers",
++ "License :: OSI Approved :: MIT License",
++ "Framework :: AnyIO",
++ "Typing :: Typed",
++ "Programming Language :: Python",
++ "Programming Language :: Python :: 3",
++ "Programming Language :: Python :: 3.8",
++ "Programming Language :: Python :: 3.9",
++ "Programming Language :: Python :: 3.10",
++ "Programming Language :: Python :: 3.11",
++ "Programming Language :: Python :: 3.12",
++ ],
++ author="Alex Grönholm",
++ author_email="alex.gronholm@nextday.fi",
++ license="MIT",
++ python_requires=">=3.8",
++ install_requires=[
++ "exceptiongroup >= 1.0.2; python_version < '3.11'",
++ "idna >= 2.8",
++ "sniffio >= 1.1",
++ ],
++ packages=find_packages(where="src", exclude=["tests", "debug"]),
++ package_dir={"": "src"},
++ include_package_data=True,
++ extras_require={
++ "trio": ["trio >= 0.22"],
++ "test": [
++ "anyio[trio]",
++ "coverage[toml] >= 4.5",
++ "hypothesis >= 4.0",
++ "psutil >= 5.9",
++ "pytest >= 7.0",
++ "pytest-mock >= 3.6.1",
++ "trustme",
++ "uvloop >= 0.17; python_version < '3.12' and platform_python_implementation == 'CPython' and platform_system != 'Windows'",
++ ],
++ "doc": [
++ "packaging",
++ "Sphinx ~= 6.1.0",
++ "sphinx_rtd_theme",
++ "sphinxcontrib-jquery",
++ "sphinx-autodoc-typehints >= 1.2.0",
++ ],
++ },
++ project_urls={
++ "Documentation": "https://anyio.readthedocs.io/en/latest/",
++ "Changelog": "https://anyio.readthedocs.io/en/stable/versionhistory.html",
++ "Source code": "https://github.com/agronholm/anyio",
++ "Issue tracker": "https://github.com/agronholm/anyio/issues",
++ },
++)
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-exceptiongroup-add-setup-file.patch b/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-exceptiongroup-add-setup-file.patch
new file mode 100644
index 00000000..579b2b78
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-exceptiongroup-add-setup-file.patch
@@ -0,0 +1,46 @@
+From e3f45073c4898fc99cab6f78da1cb3e8a3df9aae Mon Sep 17 00:00:00 2001
+From: Malik Talha <talhamalik727x@gmail.com>
+Date: Tue, 8 Aug 2023 16:40:54 +0500
+Subject: [PATCH] exceptiongroup add setup file
+
+add setup.py to replace flit_scm build system as its not supported
+---
+ setup.py | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+ create mode 100644 setup.py
+
+diff --git a/setup.py b/setup.py
+new file mode 100644
+index 0000000..2a7b6ff
+--- /dev/null
++++ b/setup.py
+@@ -0,0 +1,29 @@
++from setuptools import setup, find_packages
++
++setup(
++ name="exceptiongroup",
++ version="1.1.2",
++ description="Backport of PEP 654 (exception groups)",
++ classifiers=[
++ "Development Status :: 5 - Production/Stable",
++ "Intended Audience :: Developers",
++ "License :: OSI Approved :: MIT License",
++ "Programming Language :: Python",
++ "Programming Language :: Python :: 3 :: Only",
++ "Typing :: Typed",
++ ],
++ author="Alex Grönholm",
++ author_email="alex.gronholm@nextday.fi",
++ license="MIT",
++ python_requires=">=3.7",
++ packages=find_packages(where="src", exclude=["tests", "debug"]),
++ package_dir={"": "src"},
++ include_package_data=True,
++ install_requires=[],
++ extras_require={"test": ["pytest >= 6"]},
++ project_urls={
++ "Changelog": "https://github.com/agronholm/exceptiongroup/blob/main/CHANGES.rst",
++ "Source code": "https://github.com/agronholm/exceptiongroup",
++ "Issue Tracker": "https://github.com/agronholm/exceptiongroup/issues",
++ },
++)
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-magic-filter-add-setup-file.patch b/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-magic-filter-add-setup-file.patch
new file mode 100644
index 00000000..457a91df
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-magic-filter-add-setup-file.patch
@@ -0,0 +1,72 @@
+From d5a4cba0199c269e13cf6f25daf49438cd1b5c32 Mon Sep 17 00:00:00 2001
+From: Malik Talha <talhamalik727x@gmail.com>
+Date: Sun, 6 Aug 2023 23:54:27 +0500
+Subject: [PATCH] magic-filter add setup file
+
+setup.py backend instead of hatchling which is not supported
+---
+ setup.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 55 insertions(+)
+ create mode 100644 setup.py
+
+diff --git a/setup.py b/setup.py
+new file mode 100644
+index 0000000..b98f77a
+--- /dev/null
++++ b/setup.py
+@@ -0,0 +1,55 @@
++from setuptools import setup, find_packages
++
++packages = [p for p in find_packages()
++ if "tests" not in p and "debug" not in p]
++
++setup(
++ name="magic-filter",
++ version="0.1.0", # Set the appropriate version number
++ description="",
++ long_description="", # Add your long description here
++ long_description_content_type="text/markdown",
++ author="Alex Root Junior",
++ author_email="pypi@aiogram.dev",
++ url="https://github.com/aiogram/magic-filter",
++ classifiers=[
++ "Development Status :: 3 - Alpha",
++ "License :: OSI Approved :: MIT License",
++ "Programming Language :: Python",
++ "Programming Language :: Python :: 3.7",
++ "Programming Language :: Python :: 3.8",
++ "Programming Language :: Python :: 3.9",
++ "Programming Language :: Python :: 3.10",
++ "Programming Language :: Python :: 3.11",
++ "Programming Language :: Python :: Implementation :: CPython",
++ "Topic :: Utilities",
++ "Typing :: Typed",
++ ],
++ keywords=["magic", "filter", "validation"],
++ license="MIT",
++ python_requires=">=3.7",
++ install_requires=[
++ 'wheel',
++ ],
++ extras_require={
++ "dev": [
++ "pre-commit~=2.20.0",
++ "pytest~=7.1.3",
++ "pytest-cov~=3.0.0",
++ "pytest-html~=3.1.1",
++ "flake8~=5.0.4",
++ "mypy~=0.971",
++ "black~=22.8.0",
++ "isort~=5.10.1",
++ "types-setuptools~=65.3.0",
++ ]
++ },
++ project_urls={
++ "Documentation": "https://docs.aiogram.dev/en/dev-3.x/dispatcher/filters/magic_filters.html",
++ "Issues": "https://github.com/aiogram/magic-filter/issues",
++ "Source": "https://github.com/aiogram/magic-filter",
++ },
++ packages=packages,
++ include_package_data=True,
++ zip_safe=False,
++)
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-rasa-remove-group-from-poetry-as-its-not-supported.patch b/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-rasa-remove-group-from-poetry-as-its-not-supported.patch
new file mode 100644
index 00000000..ad7f2bb8
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-rasa-remove-group-from-poetry-as-its-not-supported.patch
@@ -0,0 +1,23 @@
+From db7ca896e22ae838385d5928fb5a0e8b80630360 Mon Sep 17 00:00:00 2001
+From: Malik Talha <talhamalik727x@gmail.com>
+Date: Mon, 24 Jul 2023 12:17:35 +0500
+Subject: [PATCH] rasa remove group from poetry as its not supported
+
+poetry version < 1.20 deos not support group in pyproject.toml
+---
+ pyproject.toml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pyproject.toml b/pyproject.toml
+index 9fe32cb..9ee4b5f 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -300,7 +300,7 @@ extras = [ "tls", "srv",]
+ git = "https://github.com/RasaHQ/pytest-sanic"
+ branch = "fix_signal_issue"
+
+-[tool.poetry.group.dev.dependencies]
++[tool.poetry.dev-dependencies]
+ ruff = ">=0.0.255,<0.0.256"
+ docker = "^6.0.1"
+ pytest-cov = "^4.0.0"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-rasa-sdk-remove-group-from-poetry-as-its-not-support.patch b/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-rasa-sdk-remove-group-from-poetry-as-its-not-support.patch
new file mode 100644
index 00000000..7c92d9be
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-rasa-sdk-remove-group-from-poetry-as-its-not-support.patch
@@ -0,0 +1,31 @@
+From 39db336c60f5499568802b878acb864008739d48 Mon Sep 17 00:00:00 2001
+From: Malik Talha <talhamalik727x@gmail.com>
+Date: Mon, 7 Aug 2023 02:14:25 +0500
+Subject: [PATCH] rasa-sdk remove group from poetry as its not supported
+
+poetry version < 1.20 does not support group in pyproject.toml
+---
+ pyproject.toml | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/pyproject.toml b/pyproject.toml
+index e8882e1..f3e0dec 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -96,6 +96,8 @@ pep440-version-utils = "^0.3.0"
+ semantic_version = "^2.8.5"
+ mypy = "^1.3"
+ sanic-testing = "^22.3.0, <22.9.0"
++ruff = ">=0.0.256,<0.0.276"
++pytest-asyncio = "^0.21.0"
+
+ [tool.ruff.pydocstyle]
+ convention = "google"
+@@ -103,7 +105,3 @@ convention = "google"
+ [tool.pytest.ini_options]
+ python_functions = "test_"
+ asyncio_mode = "auto"
+-
+-[tool.poetry.group.dev.dependencies]
+-ruff = ">=0.0.256,<0.0.276"
+-pytest-asyncio = "^0.21.0"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-structlog-add-setup-file.patch b/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-structlog-add-setup-file.patch
new file mode 100644
index 00000000..955bde2a
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/files/0001-structlog-add-setup-file.patch
@@ -0,0 +1,61 @@
+From dedd112f7607ad9f4edd3e2aba60d9cb2cb59b2e Mon Sep 17 00:00:00 2001
+From: Malik Talha <talhamalik727x@gmail.com>
+Date: Mon, 7 Aug 2023 00:19:14 +0500
+Subject: [PATCH] structlog add setup file
+
+add setup.py to replace hatchling build system as its not supported
+---
+ setup.py | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 44 insertions(+)
+ create mode 100644 setup.py
+
+diff --git a/setup.py b/setup.py
+new file mode 100644
+index 0000000..4bc2b79
+--- /dev/null
++++ b/setup.py
+@@ -0,0 +1,44 @@
++from setuptools import setup, find_packages
++
++setup(
++ name="structlog",
++ version="23.1.0",
++ dynamic=["readme", "version"],
++ description="Structured Logging for Python",
++ author="Hynek Schlawack",
++ author_email="hs@ox.cx",
++ url="https://github.com/hynek/structlog",
++ classifiers=[
++ "Development Status :: 5 - Production/Stable",
++ "License :: OSI Approved :: Apache Software License",
++ "License :: OSI Approved :: MIT License",
++ "Operating System :: OS Independent",
++ "Programming Language :: Python :: 3.8",
++ "Programming Language :: Python :: 3.9",
++ "Programming Language :: Python :: 3.10",
++ "Programming Language :: Python :: 3.11",
++ "Programming Language :: Python :: 3.12",
++ "Programming Language :: Python :: Implementation :: CPython",
++ "Programming Language :: Python :: Implementation :: PyPy",
++ "Topic :: System :: Logging",
++ "Typing :: Typed",
++ ],
++ keywords=["logging", "structured", "structure", "log"],
++ license="MIT OR Apache-2.0",
++ python_requires=">=3.8",
++ install_requires=[
++ "wheel",
++ ],
++ project_urls={
++ "Documentation": "https://www.structlog.org/",
++ "Changelog": "https://www.structlog.org/en/stable/changelog.html",
++ "Bug Tracker": "https://github.com/hynek/structlog/issues",
++ "Source Code": "https://github.com/hynek/structlog",
++ "Funding": "https://github.com/sponsors/hynek",
++ "Tidelift": "https://tidelift.com/subscription/pkg/pypi-structlog?utm_source=pypi-structlog&utm_medium=pypi",
++ },
++ packages=find_packages(where="src", exclude=["tests", "debug"]),
++ package_dir={"": "src"},
++ include_package_data=True,
++ zip_safe=False,
++)
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-aio-pika_8.2.3.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-aio-pika_8.2.3.bb
new file mode 100644
index 00000000..e80a4d30
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-aio-pika_8.2.3.bb
@@ -0,0 +1,24 @@
+SUMMARY = "AMQP 0.9 client designed for asyncio and humans"
+HOMEPAGE = "https://github.com/mosquito/aio-pika"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+
+PYPI_PACKAGE = "aio-pika"
+
+SRC_URI[md5sum] = "1ce080b02665b7541dbef5cc0af79482"
+SRC_URI[sha256sum] = "175b657ae022f318dd1476209bee4d5b793b0e0b298759fea7c11e1aa0cac6cd"
+
+DEPENDS += " \
+ python3-yarl \
+ python3-typing-extensions \
+ python3-aiormq \
+ python3-setuptools-native \
+"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ python3-yarl \
+ python3-typing-extensions \
+ python3-aiormq \
+"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-aiogram_2.25.1.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-aiogram_2.25.1.bb
new file mode 100644
index 00000000..920f6f35
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-aiogram_2.25.1.bb
@@ -0,0 +1,28 @@
+SUMMARY = "aiogram is a modern and fully asynchronous framework for Telegram Bot API written in Python using asyncio"
+HOMEPAGE = "https://github.com/aiogram/aiogram"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=93cce29e93ddfef6ad50176fb23e6a5a"
+
+PYPI_PACKAGE = "aiogram"
+
+SRC_URI[md5sum] = "944ab87052eaa8fb16b6076750dfe1f1"
+SRC_URI[sha256sum] = "59ad78fc0ebbef1fd471c15778a4594b60117e0d7373bc2ce7bcd192074d527d"
+
+DEPENDS += " \
+ python3-magic-filter \
+ python3-aiohttp \
+ python3-aiofiles \
+ python3-certifi \
+ python3-pydantic \
+ python3-setuptools-native \
+"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ python3-magic-filter \
+ python3-aiohttp \
+ python3-aiofiles \
+ python3-certifi \
+ python3-pydantic \
+"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-aiohttp-retry_2.8.3.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-aiohttp-retry_2.8.3.bb
new file mode 100644
index 00000000..551825a2
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-aiohttp-retry_2.8.3.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Simple retry client for aiohttp."
+HOMEPAGE = "https://github.com/inyutin/aiohttp_retry"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d37fc449eb112dc6aace331d0e5f6a3e"
+
+SRC_URI = " \
+ git://github.com/inyutin/aiohttp_retry;protocol=https;branch=master \
+ "
+
+PV = "2.8.3+git${SRCPV}"
+SRCREV = "c5e6bb74b5373650527bc1f5c29ba5ad145dea48"
+S = "${WORKDIR}/git"
+
+DEPENDS += " \
+ python3-aiohttp \
+ python3-yarl \
+ "
+
+inherit setuptools3
+
+RDEPENDS:${PN} += " \
+ python3-aiohttp \
+ python3-yarl \
+ "
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-aiormq_6.4.2.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-aiormq_6.4.2.bb
new file mode 100644
index 00000000..7750c8df
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-aiormq_6.4.2.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Pure python AMQP 0.9.1 asynchronous client library"
+HOMEPAGE = "https://github.com/mosquito/aiormq"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e7462eb919e0134350d90bff49f6dc2b"
+
+PYPI_PACKAGE = "aiormq"
+
+SRC_URI[md5sum] = "f41b7a143c9ef2502358656e4cff9fe0"
+SRC_URI[sha256sum] = "fd815d2bb9d8c950361697a74c1b067bc078726c3ef3b837e979a68a4986b148"
+
+DEPENDS += " \
+ python3-yarl \
+ python3-pamqp \
+ python3-setuptools-native \
+"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ python3-yarl \
+ python3-pamqp \
+"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-anyio_3.7.1.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-anyio_3.7.1.bb
new file mode 100644
index 00000000..681eb7f0
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-anyio_3.7.1.bb
@@ -0,0 +1,24 @@
+SUMMARY = "AnyIO is an asynchronous networking and concurrency library that works on top of either asyncio or trio"
+HOMEPAGE = "https://github.com/agronholm/anyio"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c0a769411d2af7894099e8ff75058c9f"
+
+PYPI_PACKAGE = "anyio"
+
+SRC_URI += "file://0001-anyio-add-setup-file.patch"
+SRC_URI[md5sum] = "58d288dd84e28e2507ff9ce7e4620010"
+SRC_URI[sha256sum] = "44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"
+
+DEPENDS += " \
+ python3-sniffio \
+ python3-idna \
+ python3-exceptiongroup \
+ "
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ python3-sniffio \
+ python3-idna \
+ python3-exceptiongroup \
+ "
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-apscheduler_3.9.1.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-apscheduler_3.9.1.bb
new file mode 100644
index 00000000..c0b42eb5
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-apscheduler_3.9.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Task scheduling library for Python"
+HOMEPAGE = "https://github.com/agronholm/apscheduler"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f0e423eea5c91e7aa21bdb70184b3e53"
+
+PYPI_PACKAGE = "APScheduler"
+
+SRC_URI[md5sum] = "bdf3d90556514b99e2104dbf9a206546"
+SRC_URI[sha256sum] = "65e6574b6395498d371d045f2a8a7e4f7d50c6ad21ef7313d15b1c7cf20df1e3"
+
+DEPENDS += " \
+ python3-attrs \
+ python3-anyio \
+ python3-tzlocal \
+ python3-typing-extensions \
+ "
+
+inherit pypi python_setuptools_build_meta
+
+RDEPENDS:${PN} += " \
+ python3-attrs \
+ python3-anyio \
+ python3-tzlocal \
+ python3-typing-extensions \
+ "
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-babel_2.9.1.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-babel_2.9.1.bb
new file mode 100644
index 00000000..2002fede
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-babel_2.9.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "The official repository for Babel, the Python Internationalization Library"
+HOMEPAGE = "https://github.com/python-babel/babel"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=05fb707293a85504aa67afc8ea34d747"
+
+PYPI_PACKAGE = "Babel"
+
+SRC_URI[md5sum] = "7166099733d78aa857d74fa50d8ff58c"
+SRC_URI[sha256sum] = "bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"
+
+DEPENDS += "python3-pytz"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-pytz"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-boto3_1.28.9.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-boto3_1.28.9.bb
new file mode 100644
index 00000000..4cb31220
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-boto3_1.28.9.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for Python, which allows Python developers to write software that makes use of services like Amazon S3 and Amazon EC2."
+HOMEPAGE = "https://github.com/boto/boto3"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+SRC_URI = "\
+ git://github.com/boto/boto3.git;protocol=https;branch=master \
+ "
+
+PV = "1.28.9+git${SRCPV}"
+S = "${WORKDIR}/git"
+SRCREV = "59b3da9b9c12de8c13bdb51d9aed6e9db4ff170d"
+
+DEPENDS += "\
+ python3 \
+ python3-botocore \
+ python3-jmespath \
+ python3-s3transfer \
+ "
+
+inherit setuptools3
+
+# python3 needs to be included since there are core dependencies such
+# as getpass.
+RDEPENDS:${PN} += "\
+ python3 \
+ python3-botocore \
+ python3-jmespath \
+ python3-s3transfer \
+ "
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-botocore_1.31.9.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-botocore_1.31.9.bb
new file mode 100644
index 00000000..cc3208c0
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-botocore_1.31.9.bb
@@ -0,0 +1,26 @@
+SUMMARY = "he low-level, core functionality of boto3 and the AWS CLI."
+HOMEPAGE = "https://github.com/boto/botocore"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ee41112a44fe7014dce33e26468ba93"
+
+SRC_URI = "\
+ git://github.com/boto/botocore.git;protocol=https;branch=master \
+ "
+
+PV = "1.31.9+git${SRCPV}"
+S = "${WORKDIR}/git"
+SRCREV = "88ebf0a86f9bb7270b6f65211621e8f44a91a1c5"
+
+DEPENDS += "\
+ python3-dateutil \
+ python3-jmespath \
+ python3-urllib3 \
+ "
+
+inherit setuptools3
+
+RDEPENDS:${PN} += "\
+ python3-dateutil \
+ python3-jmespath \
+ python3-urllib3 \
+ "
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-cloudpickle_2.2.1.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-cloudpickle_2.2.1.bb
new file mode 100644
index 00000000..baa484d0
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-cloudpickle_2.2.1.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Extended pickling support for Python objects"
+HOMEPAGE = "https://github.com/cloudpipe/cloudpickle"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b4d59aa5e2cc777722aac17841237931"
+
+PYPI_PACKAGE = "cloudpickle"
+
+SRC_URI[md5sum] = "640430615bdb68e1900bc26b84fad967"
+SRC_URI[sha256sum] = "d89684b8de9e34a2a43b3460fbca07d09d6e25ce858df4d5a44240403b6178f5"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-dask_2022.10.2.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-dask_2022.10.2.bb
new file mode 100644
index 00000000..a63cb971
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-dask_2022.10.2.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Parallel computing with task scheduling"
+HOMEPAGE = "https://github.com/dask/dask"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f5eb2002f2deb4e003875dd453131e73"
+
+PYPI_PACKAGE = "dask"
+
+SRC_URI[md5sum] = "ec92d1ff05c60e0df0cf96753bc818a9"
+SRC_URI[sha256sum] = "42cb43f601709575fa46ce09e74bea83fdd464187024f56954e09d9b428ceaab"
+
+DEPENDS += " \
+ python3-click \
+ python3-pyyaml \
+ python3-packaging \
+ python3-cloudpickle \
+ python3-fsspec \
+ python3-partd \
+ python3-toolz \
+ "
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ python3-click \
+ python3-pyyaml \
+ python3-packaging \
+ python3-cloudpickle \
+ python3-fsspec \
+ python3-partd \
+ python3-toolz \
+ "
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-exceptiongroup_1.1.2.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-exceptiongroup_1.1.2.bb
new file mode 100644
index 00000000..49caeaac
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-exceptiongroup_1.1.2.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Backport of PEP 654 (exception groups)"
+HOMEPAGE = "https://github.com/agronholm/exceptiongroup"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d5caa317463c433575efff1d2fe206d7"
+
+PYPI_PACKAGE = "exceptiongroup"
+
+SRC_URI += "file://0001-exceptiongroup-add-setup-file.patch"
+SRC_URI[md5sum] = "80538bd299352020bc08d4059457d026"
+SRC_URI[sha256sum] = "12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-fbmessenger_6.0.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-fbmessenger_6.0.0.bb
new file mode 100644
index 00000000..5411733d
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-fbmessenger_6.0.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "A python library to communicate with the Facebook Messenger API's"
+HOMEPAGE = "https://github.com/rehabstudio/fbmessenger"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=51d15f787b3ed17007b36e82f403bdae"
+
+SRC_URI = " \
+ git://github.com/rehabstudio/fbmessenger;protocol=https;branch=master \
+ "
+
+PV = "6.0.0+git${SRCPV}"
+SRCREV = "a7b4b203aed3251da359bf6b3069486daf441d23"
+S = "${WORKDIR}/git"
+
+DEPENDS += "python3-requests"
+
+inherit setuptools3
+
+RDEPENDS:${PN} += "python3-requests"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-fire_0.5.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-fire_0.5.0.bb
new file mode 100644
index 00000000..49b2af50
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-fire_0.5.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely any Python object."
+HOMEPAGE = "https://github.com/google/python-fire"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ab892b2b62f951d424bdb712a72584cc"
+
+PYPI_PACKAGE = "fire"
+
+SRC_URI[md5sum] = "8b24d579bd2a1b344b4f9670fa49ebc8"
+SRC_URI[sha256sum] = "a6b0d49e98c8963910021f92bba66f65ab440da2982b78eb1bbf95a0a34aacc6"
+
+DEPENDS += "python3-six python3-termcolor"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-six python3-termcolor"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-fsspec_2023.6.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-fsspec_2023.6.0.bb
new file mode 100644
index 00000000..cc466c7c
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-fsspec_2023.6.0.bb
@@ -0,0 +1,11 @@
+SUMMARY = "A specification that python filesystems should adhere to."
+HOMEPAGE = "https://github.com/fsspec/filesystem_spec"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b38a11bf4dcdfc66307f8515ce1fbaa6"
+
+PYPI_PACKAGE = "fsspec"
+
+SRC_URI[md5sum] = "a6776f6c387e09c54146d7cc10e6c434"
+SRC_URI[sha256sum] = "d0b2f935446169753e7a5c5c55681c54ea91996cc67be93c39a154fb3a2742af"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-google-auth-oauthlib_1.0.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-google-auth-oauthlib_1.0.0.bb
new file mode 100644
index 00000000..12f462e8
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-google-auth-oauthlib_1.0.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "This library provides oauthlib integration with google-auth."
+HOMEPAGE = "https://github.com/googleapis/google-auth-library-python-oauthlib"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+PYPI_PACKAGE = "google-auth-oauthlib"
+
+SRC_URI[md5sum] = "231bbc2d9875d8d6796b096d25f58a2d"
+SRC_URI[sha256sum] = "e375064964820b47221a7e1b7ee1fd77051b6323c3f9e3e19785f78ab67ecfc5"
+
+DEPENDS += " \
+ python3-google-auth \
+ python3-requests-oauthlib \
+ "
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ python3-google-auth \
+ python3-requests-oauthlib \
+ "
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-html5tagger_1.3.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-html5tagger_1.3.0.bb
new file mode 100644
index 00000000..72a5ab70
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-html5tagger_1.3.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Create HTML documents from Python"
+HOMEPAGE = "https://github.com/sanic-org/html5tagger"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=605b9ee741fb194674b08ff2532e52b1"
+
+PYPI_PACKAGE = "html5tagger"
+
+SRC_URI[md5sum] = "5f2b0c139ecd9d00f314e9c8c2ad99b3"
+SRC_URI[sha256sum] = "84fa3dfb49e5c83b79bbd856ab7b1de8e2311c3bb46a8be925f119e3880a8da9"
+
+DEPENDS += "python3-setuptools-scm-native"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-httptools_0.6.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-httptools_0.6.0.bb
new file mode 100644
index 00000000..488826a9
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-httptools_0.6.0.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Fast HTTP parser"
+HOMEPAGE = "https://github.com/MagicStack/httptools"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0a2d82955bf3facdf04cb882655e840e"
+
+PYPI_PACKAGE = "httptools"
+
+SRC_URI[md5sum] = "4e55dacfe4238afa94ba670f16c426a0"
+SRC_URI[sha256sum] = "9fc6e409ad38cbd68b177cd5158fc4042c796b82ca88d99ec78f07bed6c6b796"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-jsonpickle_3.0.1.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-jsonpickle_3.0.1.bb
new file mode 100644
index 00000000..d730e5dd
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-jsonpickle_3.0.1.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Python library for serializing any arbitrary object graph into JSON."
+HOMEPAGE = "https://github.com/jsonpickle/jsonpickle"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c9706350b6b0ee6b429bf3c10e2172fd"
+
+PYPI_PACKAGE = "jsonpickle"
+
+SRC_URI[md5sum] = "cff64658527ec65ba815551baa727d1e"
+SRC_URI[sha256sum] = "032538804795e73b94ead410800ac387fdb6de98f8882ac957fcd247e3a85200"
+
+DEPENDS += "python3-setuptools-scm-native"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-locket_1.0.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-locket_1.0.0.bb
new file mode 100644
index 00000000..7339b2d4
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-locket_1.0.0.bb
@@ -0,0 +1,11 @@
+SUMMARY = "File-based locks for Python on Linux and Windows"
+HOMEPAGE = "https://github.com/mwilliamson/locket.py"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=43656003bc006fb5bbd82fc1f313598e"
+
+PYPI_PACKAGE = "locket"
+
+SRC_URI[md5sum] = "fff6d2fcd92fbeb9af9dbc260eb0b5e8"
+SRC_URI[sha256sum] = "5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-magic-filter_1.0.10.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-magic-filter_1.0.10.bb
new file mode 100644
index 00000000..6f1eb941
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-magic-filter_1.0.10.bb
@@ -0,0 +1,14 @@
+SUMMARY = "This package provides magic filter based on dynamic attribute getter"
+HOMEPAGE = "https://github.com/aiogram/magic-filter"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a5f760788262f557f4db541bfdc749f6"
+
+SRC_URI = "git://github.com/aiogram/magic-filter;protocol=https;branch=master \
+ file://0001-magic-filter-add-setup-file.patch \
+ "
+
+PV = "1.0.10+git${SRCPV}"
+SRCREV = "599e5bfa574d6cc97fd00b41a77b3247b0736ce9"
+S = "${WORKDIR}/git"
+
+inherit setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-pamqp_3.2.1.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-pamqp_3.2.1.bb
new file mode 100644
index 00000000..10f49e7c
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-pamqp_3.2.1.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Low level AMQP frame encoding and decoding library"
+HOMEPAGE = "https://github.com/gmr/pamqp"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1b4ca9d54d51a18213e82da5f6bc9ecd"
+
+PYPI_PACKAGE = "pamqp"
+
+SRC_URI[md5sum] = "cccc4329b7a7910928d6fba7e5c5709c"
+SRC_URI[sha256sum] = "22550ceb1ca50aafda65873e77e8c1c1b139fb5975e1a09860fae940cf8e970a"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-partd_1.4.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-partd_1.4.0.bb
new file mode 100644
index 00000000..596ace98
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-partd_1.4.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Concurrent appendable key-value storage"
+HOMEPAGE = "https://github.com/dask/partd/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=01cbb2369bb5a7c865b5a165065dabb9"
+
+PYPI_PACKAGE = "partd"
+
+SRC_URI[md5sum] = "b1b31036992ad5892d32972128f15550"
+SRC_URI[sha256sum] = "aa0ff35dbbcc807ae374db56332f4c1b39b46f67bf2975f5151e0b4186aed0d5"
+
+DEPENDS += " \
+ python3-locket \
+ python3-toolz \
+ "
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ python3-locket \
+ python3-toolz \
+ "
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-pydantic_1.10.9.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-pydantic_1.10.9.bb
new file mode 100644
index 00000000..44ada305
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-pydantic_1.10.9.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Data validation using Python type hints"
+HOMEPAGE = "https://github.com/pydantic/pydantic"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2c02ea30650b91528657db64baea1757"
+
+PYPI_PACKAGE = "pydantic"
+
+SRC_URI[md5sum] = "d8135717be5067f7acfdeb4905d318ab"
+SRC_URI[sha256sum] = "95c70da2cd3b6ddf3b9645ecaa8d98f3d80c606624b6d245558d202cd23ea3be"
+
+DEPENDS += " \
+ python3-typing-extensions \
+ python3-setuptools-native \
+"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ python3-typing-extensions \
+"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-questionary_1.10.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-questionary_1.10.0.bb
new file mode 100644
index 00000000..68a8faec
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-questionary_1.10.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Python library to build pretty command line user prompts"
+HOMEPAGE = "https://github.com/tmbo/questionary"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=19f0688967ec2b2624ee04c0136daae7"
+
+PYPI_PACKAGE = "questionary"
+
+SRC_URI[md5sum] = "0fc453e2b7f2516e76edf321b58c1332"
+SRC_URI[sha256sum] = "600d3aefecce26d48d97eee936fdb66e4bc27f934c3ab6dd1e292c4f43946d90"
+
+DEPENDS += "python3-prompt-toolkit"
+
+inherit pypi python_poetry_core
+
+RDEPENDS:${PN} += "python3-prompt-toolkit"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-randomname_0.1.5.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-randomname_0.1.5.bb
new file mode 100644
index 00000000..a68fb8a7
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-randomname_0.1.5.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Generate random names (adj-noun) like docker and github."
+HOMEPAGE = "https://github.com/beasteers/randomname"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=af47da9a50b5df42a6fb397386474144"
+
+SRC_URI = " \
+ git://github.com/beasteers/randomname;protocol=https;branch=main \
+ "
+
+PV = "0.1.5+git${SRCPV}"
+SRCREV = "1068e5107929d20b878b05d87363edfd5d83247d"
+S = "${WORKDIR}/git"
+
+DEPENDS += "python3-fire"
+
+inherit setuptools3
+
+RDEPENDS:${PN} += "python3-fire"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-rasa-sdk_3.6.1.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-rasa-sdk_3.6.1.bb
new file mode 100644
index 00000000..9f48efdf
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-rasa-sdk_3.6.1.bb
@@ -0,0 +1,44 @@
+SUMMARY = "SDK for the development of custom actions for Rasa"
+HOMEPAGE = "https://github.com/RasaHQ/rasa-sdk"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=ad8371373a2c6c672f744151097162e1"
+
+SRC_URI = " \
+ git://github.com/RasaHQ/rasa-sdk;protocol=https;branch=main \
+ file://0001-rasa-sdk-remove-group-from-poetry-as-its-not-support.patch \
+ "
+
+PV = "3.6.1+git${SRCPV}"
+SRCREV = "b3e24199f020d876beb7a9ab3bc18afc65ebe989"
+S = "${WORKDIR}/git"
+
+DEPENDS += " \
+ python3-coloredlogs \
+ python3-typing-extensions \
+ python3-websockets \
+ python3-prompt-toolkit \
+ python3-pluggy \
+ python3-ruamel.yaml \
+ python3-sanic \
+ python3-sanic-cors \
+"
+
+inherit python_poetry_core
+
+RDEPENDS:${PN} += " \
+ python3-coloredlogs \
+ python3-typing-extensions \
+ python3-websockets \
+ python3-prompt-toolkit \
+ python3-pluggy \
+ python3-ruamel.yaml \
+ python3-sanic \
+ python3-sanic-cors \
+"
+
+do_install:append() {
+ # Remove README and LICENSE from the site-packages directory as they shouldn't be placed there,
+ # it causes conflicts.
+ rm -f ${D}${libdir}/python3.10/site-packages/README.md
+ rm -f ${D}${libdir}/python3.10/site-packages/LICENSE.txt
+}
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-rasa_3.6.4.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-rasa_3.6.4.bb
new file mode 100644
index 00000000..1038fc36
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-rasa_3.6.4.bb
@@ -0,0 +1,81 @@
+SUMMARY = "Open source machine learning framework to automate text- and voice-based conversations"
+HOMEPAGE = "https://github.com/RasaHQ/rasa"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=930bc50f846c55c70b79b78055ae3d9b"
+
+PYPI_PACKAGE = "rasa"
+
+SRC_URI += " \
+ file://0001-rasa-remove-group-from-poetry-as-its-not-supported.patch \
+"
+SRC_URI[md5sum] = "7aab346588a3056b54ff783357e4d081"
+SRC_URI[sha256sum] = "21e57a99bdec8d9f36f7828985c8e3fb3bf3b2c3c94a856d3006e0a68b41a399"
+
+inherit pypi python_poetry_core
+
+RDEPENDS:${PN} += " \
+ python3-requests \
+ python3-matplotlib \
+ python3-absl \
+ python3-tqdm \
+ python3-numpy \
+ python3-pyyaml \
+ python3-aiohttp \
+ python3-attrs \
+ python3-websockets \
+ python3-typing-extensions \
+ python3-pytz \
+ python3-protobuf \
+ python3-regex \
+ python3-pydot \
+ python3-packaging \
+ python3-jsonschema \
+ python3-networkx \
+ python3-ujson \
+ python3-dateutil \
+ python3-portalocker \
+ python3-pluggy \
+ python3-pykwalify \
+ python3-sentry-sdk \
+ python3-pymongo \
+ python3-sqlalchemy \
+ python3-socketio \
+ python3-cachecontrol \
+ python3-google-auth \
+ tensorflow \
+ python3-typing-utils \
+ python3-aiogram \
+ python3-aio-pika \
+ python3-joblib \
+ python3-scipy \
+ python3-scikit-learn \
+ python3-sklearn-crfsuite \
+ python3-jsonpickle \
+ python3-ruamel.yaml \
+ python3-structlog \
+ python3-structlog-sentry \
+ python3-tarsafe \
+ python3-terminaltables \
+ python3-sanic \
+ python3-sanic-cors \
+ python3-sanic-jwt \
+ python3-sanic-routing \
+ python3-randomname \
+ python3-questionary \
+ python3-rasa-sdk \
+ python3-fbmessenger \
+ python3-slack-sdk \
+ python3-babel \
+ python3-twilio \
+ python3-webexteamssdk \
+ python3-apscheduler \
+ python3-boto3 \
+ python3-dask \
+"
+
+do_install:append() {
+ # Remove README and LICENSE from the site-packages directory as they shouldn't be placed there,
+ # it causes conflicts.
+ rm -f ${D}${libdir}/python3.10/site-packages/README.md
+ rm -f ${D}${libdir}/python3.10/site-packages/LICENSE.txt
+}
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-requests-toolbelt_1.0.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-requests-toolbelt_1.0.0.bb
new file mode 100644
index 00000000..196db185
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-requests-toolbelt_1.0.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "A toolbelt of useful classes and functions to be used with python-requests"
+HOMEPAGE = "https://github.com/requests/toolbelt"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6f14302a4b4099009ab38b4dde5f1075"
+
+PYPI_PACKAGE = "requests-toolbelt"
+
+SRC_URI[md5sum] = "6a8348cfc9991b44e499345db1c6f925"
+SRC_URI[sha256sum] = "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"
+
+DEPENDS += "python3-requests"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-requests"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-ruamel.yaml.clib_0.2.7.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-ruamel.yaml.clib_0.2.7.bb
new file mode 100644
index 00000000..33904881
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-ruamel.yaml.clib_0.2.7.bb
@@ -0,0 +1,11 @@
+SUMMARY = "C version of reader, parser and emitter for ruamel.yaml"
+HOMEPAGE = "https://sourceforge.net/projects/ruamel-yaml-clib/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=835b7de93e6217192ffce476ecb74e86"
+
+PYPI_PACKAGE = "ruamel.yaml.clib"
+
+SRC_URI[md5sum] = "4b7bc49c0022baf161203dc1ea4806f9"
+SRC_URI[sha256sum] = "1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-ruamel.yaml_0.17.21.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-ruamel.yaml_0.17.21.bb
new file mode 100644
index 00000000..2801eed1
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-ruamel.yaml_0.17.21.bb
@@ -0,0 +1,15 @@
+SUMMARY = "ruamel.yaml is a YAML 1.2 parser/emitter for Python"
+HOMEPAGE = "https://sourceforge.net/projects/ruamel-yaml/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=034154b7344d15438bc5ed5ee9cc075f"
+
+PYPI_PACKAGE = "ruamel.yaml"
+
+SRC_URI[md5sum] = "206bda0f33ab2c2f63777636200748b7"
+SRC_URI[sha256sum] = "8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"
+
+DEPENDS += "python3-ruamel.yaml.clib python3-setuptools-native"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-ruamel.yaml.clib"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-s3transfer_0.6.1.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-s3transfer_0.6.1.bb
new file mode 100644
index 00000000..0d72cf48
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-s3transfer_0.6.1.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Amazon S3 Transfer Manager for Python"
+HOMEPAGE = "https://github.com/boto/s3transfer"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI = "\
+ git://github.com/boto/s3transfer.git;protocol=https;branch=master \
+ "
+
+PV = "0.6.1+git${SRCPV}"
+S = "${WORKDIR}/git"
+SRCREV = "f53a45d286834799207c4e225f3676bfa8eb4e1a"
+
+DEPENDS += "\
+ python3-botocore \
+ python3-urllib3 \
+ "
+
+inherit setuptools3
+
+RDEPENDS:${PN} += "\
+ python3-botocore \
+ python3-urllib3 \
+ "
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic-cors_2.0.1.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic-cors_2.0.1.bb
new file mode 100644
index 00000000..66834a30
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic-cors_2.0.1.bb
@@ -0,0 +1,21 @@
+SUMMARY = "A Sanic extension for handling Cross Origin Resource Sharing (CORS), making cross-origin AJAX possible."
+HOMEPAGE = "https://github.com/ashleysommer/sanic-cors"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=db2d9ca6ab6d7568b89656d68b0c01ee"
+
+PYPI_PACKAGE = "Sanic-Cors"
+
+SRC_URI[md5sum] = "9d4e56275332487fb6fdfe8644116e98"
+SRC_URI[sha256sum] = "4d2f26333d49db428217814c66e89fc3df20fc62a5ab518a71fa22e2e249e19d"
+
+DEPENDS += " \
+ python3-packaging \
+ python3-sanic \
+ "
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+ python3-packaging \
+ python3-sanic \
+ "
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic-jwt_1.8.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic-jwt_1.8.0.bb
new file mode 100644
index 00000000..8bc2f47e
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic-jwt_1.8.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Authentication, JWT, and permission scoping for Sanic"
+HOMEPAGE = "https://github.com/ahopkins/sanic-jwt"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c3a2839b22af0a25e097bcfc682c6523"
+
+PYPI_PACKAGE = "sanic-jwt"
+
+SRC_URI[md5sum] = "b043b92964f623041949ac873be113e8"
+SRC_URI[sha256sum] = "ae16cdaebc8cd9569dae6f633a2a876205d7b36134e5920698ae5b8e4f1b83f1"
+
+DEPENDS += "python3-pyjwt"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-pyjwt"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic-routing_0.7.2.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic-routing_0.7.2.bb
new file mode 100644
index 00000000..79253db0
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic-routing_0.7.2.bb
@@ -0,0 +1,11 @@
+SUMMARY = "nternal handler routing for Sanic beginning with v21.3."
+HOMEPAGE = "https://github.com/sanic-org/sanic-routing/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5beb17d8bb3a5e27e9eddc439ada4f13"
+
+PYPI_PACKAGE = "sanic-routing"
+
+SRC_URI[md5sum] = "f574de41733278fd3f77e10d039a2081"
+SRC_URI[sha256sum] = "139ce88b3f054e7aa336e2ecc8459837092b103b275d3a97609a34092c55374d"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic_21.12.2.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic_21.12.2.bb
new file mode 100644
index 00000000..ef7a8f40
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sanic_21.12.2.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Accelerate your web app development | Build fast. Run fast."
+HOMEPAGE = "https://github.com/sanic-org/sanic"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=72f485002f8d965537e469a30e50998f"
+
+PYPI_PACKAGE = "sanic"
+
+SRC_URI[md5sum] = "8d4b54e966bd6eb237aee81b1e4e3b51"
+SRC_URI[sha256sum] = "c426e15aac6984860c6d1221329be17e02e2dfed4ce0abf8532ab096026ee5e3"
+
+DEPENDS += " \
+ python3-websockets \
+ python3-typing-extensions \
+ python3-ujson \
+ python3-multidict \
+ python3-aiofiles \
+ python3-sanic-routing \
+ python3-httptools \
+ python3-uvloop \
+ python3-html5tagger \
+ python3-tracerite \
+ "
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+ python3-websockets \
+ python3-typing-extensions \
+ python3-ujson \
+ python3-multidict \
+ python3-aiofiles \
+ python3-sanic-routing \
+ python3-httptools \
+ python3-uvloop \
+ python3-html5tagger \
+ python3-tracerite \
+ "
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-slack-sdk_3.21.3.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-slack-sdk_3.21.3.bb
new file mode 100644
index 00000000..78f0397d
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-slack-sdk_3.21.3.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Slack Developer Kit for Python"
+HOMEPAGE = "https://github.com/slackapi/python-slack-sdk"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5059159dec692c70339fe0991a107b76"
+
+SRC_URI = "\
+ git://github.com/slackapi/python-slack-sdk;protocol=https;branch=main \
+ "
+
+PV = "3.21.3+git${SRCPV}"
+S = "${WORKDIR}/git"
+SRCREV = "8815d21930075cc7c2c8c482d8a30af4f1e6a759"
+
+inherit setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sniffio_1.3.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sniffio_1.3.0.bb
new file mode 100644
index 00000000..116e1654
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-sniffio_1.3.0.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Sniff out which async library your code is running under"
+HOMEPAGE = "https://github.com/python-trio/sniffio"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=e62ba5042d5983462ad229f5aec1576c"
+
+SRC_URI[md5sum] = "abb96bcda81817d6c632915c53ac29c8"
+SRC_URI[sha256sum] = "e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"
+
+inherit pypi setuptools3 \ No newline at end of file
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-structlog-sentry_2.0.3.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-structlog-sentry_2.0.3.bb
new file mode 100644
index 00000000..729fea5e
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-structlog-sentry_2.0.3.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Sentry integration for structlog"
+HOMEPAGE = "https://github.com/kiwicom/structlog-sentry/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=533070a240ce2e02da642b7dc7406929"
+
+SRC_URI = " \
+ git://github.com/kiwicom/structlog-sentry;protocol=https;branch=master \
+ "
+
+PV = "2.0.3+git${SRCPV}"
+SRCREV = "3cae523da9fe6e022de7b6d283090ddb59966625"
+S = "${WORKDIR}/git"
+
+DEPENDS += " \
+ python3-structlog \
+ python3-sentry-sdk \
+ python3-urllib3 \
+ python3-certifi \
+ "
+
+inherit python_poetry_core
+
+RDEPENDS:${PN} += " \
+ python3-structlog \
+ python3-sentry-sdk \
+ python3-urllib3 \
+ python3-certifi \
+ "
+
+do_install:append() {
+ # Remove extra files from the site-packages directory as they shouldn't be placed there,
+ # it causes conflicts.
+ rm -f ${D}${libdir}/python3.10/site-packages/README.md
+ rm -f ${D}${libdir}/python3.10/site-packages/tox.ini
+ rm -f ${D}${libdir}/python3.10/site-packages/pyproject.toml
+ rm -f ${D}${libdir}/python3.10/site-packages/.coveragerc
+ rm -f ${D}${libdir}/python3.10/site-packages/.pre-commit-config.yaml
+}
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-structlog_23.1.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-structlog_23.1.0.bb
new file mode 100644
index 00000000..c93cae88
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-structlog_23.1.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Simple, powerful, and fast logging for Python."
+HOMEPAGE = "https://github.com/hynek/structlog"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE-MIT;md5=0473cdcf9c6ed3f81c08d886870daea5"
+
+PYPI_PACKAGE = "structlog"
+
+SRC_URI += "file://0001-structlog-add-setup-file.patch"
+SRC_URI[md5sum] = "bd2218c8799e44a90689bbdeadcab4f3"
+SRC_URI[sha256sum] = "270d681dd7d163c11ba500bc914b2472d2b50a8ef00faa999ded5ff83a2f906b"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-tarsafe_0.0.4.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-tarsafe_0.0.4.bb
new file mode 100644
index 00000000..a7137500
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-tarsafe_0.0.4.bb
@@ -0,0 +1,14 @@
+SUMMARY = "A safe subclass of the TarFile class for interacting with tar files."
+HOMEPAGE = "https://github.com/beatsbears/tarsafe"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=db603d043a8892407445e1da525115a0"
+
+SRC_URI = " \
+ git://github.com/beatsbears/tarsafe;protocol=https;branch=master \
+ "
+
+PV = "0.0.4+git${SRCPV}"
+SRCREV = "80fe366d1e7d3dab436d3f809afb44d6b2f2abd1"
+S = "${WORKDIR}/git"
+
+inherit setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-terminaltables_3.1.10.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-terminaltables_3.1.10.bb
new file mode 100644
index 00000000..a037589e
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-terminaltables_3.1.10.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Generate simple tables in terminals from a nested list of strings."
+HOMEPAGE = "https://github.com/matthewdeanmartin/terminaltables"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5f85abc11673af717387593a5281f87a"
+
+PYPI_PACKAGE = "terminaltables"
+
+SRC_URI[md5sum] = "5467e06a1a6e24dc44e6dd241706668e"
+SRC_URI[sha256sum] = "ba6eca5cb5ba02bba4c9f4f985af80c54ec3dccf94cfcd190154386255e47543"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-toolz_0.12.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-toolz_0.12.0.bb
new file mode 100644
index 00000000..891986c8
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-toolz_0.12.0.bb
@@ -0,0 +1,11 @@
+SUMMARY = "A functional standard library for Python."
+HOMEPAGE = "https://github.com/pytoolz/toolz"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=ca09cab178326d18433aae982d1edf5d"
+
+PYPI_PACKAGE = "toolz"
+
+SRC_URI[md5sum] = "5ca1991596816c576b02237ab3d29f0c"
+SRC_URI[sha256sum] = "88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194"
+
+inherit pypi setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-tracerite_1.1.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-tracerite_1.1.0.bb
new file mode 100644
index 00000000..eed5466c
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-tracerite_1.1.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Tracebacks for Humans (in Jupyter notebooks)"
+HOMEPAGE = "https://github.com/sanic-org/tracerite"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=605b9ee741fb194674b08ff2532e52b1"
+
+SRC_URI = " \
+ git://github.com/sanic-org/tracerite;protocol=https;branch=main \
+ "
+
+PV = "1.1.0+git${SRCPV}"
+SRCREV = "c96c21f26393ddcf2472b92f7662c3e5664b0cb8"
+S = "${WORKDIR}/git"
+
+DEPENDS += "python3-html5tagger python3-setuptools-scm-native"
+
+inherit setuptools3
+
+RDEPENDS:${PN} += "python3-html5tagger"
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-twilio_8.2.2.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-twilio_8.2.2.bb
new file mode 100644
index 00000000..36d0258d
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-twilio_8.2.2.bb
@@ -0,0 +1,27 @@
+SUMMARY = "A Python module for communicating with the Twilio API and generating TwiML."
+HOMEPAGE = "https://github.com/twilio/twilio-python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=98e410977eaccb4352beb8e4048b421e"
+
+PYPI_PACKAGE = "twilio"
+
+SRC_URI[md5sum] = "1dfe879f10e0919b21d77d8ed9252039"
+SRC_URI[sha256sum] = "6470a8bb6b1e240dd48c77f17e29fc1ee9041b75707bf437f880a585b6c722bc"
+
+DEPENDS += " \
+ python3-pytz \
+ python3-requests \
+ python3-pyjwt \
+ python3-aiohttp \
+ python3-aiohttp-retry \
+ "
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ python3-pytz \
+ python3-requests \
+ python3-pyjwt \
+ python3-aiohttp \
+ python3-aiohttp-retry \
+ "
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-typing-utils_0.1.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-typing-utils_0.1.0.bb
new file mode 100644
index 00000000..02f423b1
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-typing-utils_0.1.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Backport Python 3.8+ typing utils & add issubtype & more"
+HOMEPAGE = "https://github.com/bojiang/typing_utils"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+SRC_URI = " \
+ git://github.com/bojiang/typing_utils;protocol=https;branch=main \
+ "
+
+PV = "0.1.0+git${SRCPV}"
+SRCREV = "10476c342d3106be1d5b2c16f875bec53590f5b5"
+S = "${WORKDIR}/git"
+
+inherit setuptools3
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-uvloop_0.17.0.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-uvloop_0.17.0.bb
new file mode 100644
index 00000000..2c6d2880
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-uvloop_0.17.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Ultra fast asyncio event loop."
+HOMEPAGE = "https://github.com/MagicStack/uvloop"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE-APACHE;md5=bb92739ddad0a2811957bd98bdb90474"
+
+PYPI_PACKAGE = "uvloop"
+
+SRC_URI[md5sum] = "bc5e841a1c3f6e8935eeaf9d82b5ee29"
+SRC_URI[sha256sum] = "0ddf6baf9cf11a1a22c71487f39f15b2cf78eb5bde7e5b45fbb99e8a9d91b9e1"
+
+DEPENDS += "python3-cython-native"
+
+inherit pypi setuptools3
+
+do_compile:prepend() {
+ export LIBUV_CONFIGURE_HOST=${HOST_SYS}
+}
+
+do_install:prepend() {
+ export LIBUV_CONFIGURE_HOST=${HOST_SYS}
+}
diff --git a/meta-offline-voice-agent/recipes-python/python3-rasa/python3-webexteamssdk_1.6.1.bb b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-webexteamssdk_1.6.1.bb
new file mode 100644
index 00000000..edee3157
--- /dev/null
+++ b/meta-offline-voice-agent/recipes-python/python3-rasa/python3-webexteamssdk_1.6.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Work with the Webex Teams APIs in native Python!"
+HOMEPAGE = "https://github.com/WebexCommunity/WebexPythonSDK"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9ca6af19c185da6b9c067b533f3c2a30"
+
+PYPI_PACKAGE = "webexteamssdk"
+
+SRC_URI[md5sum] = "b2cde8af44cd73ed5f6332ca74268a62"
+SRC_URI[sha256sum] = "bbc7672f381b26fb22d0d03f87d131a2fa1e7d54c2f37f2e4cd28d725b8b5dfb"
+
+DEPENDS += " \
+ python3-future \
+ python3-requests \
+ python3-pyjwt \
+ python3-requests-toolbelt \
+ "
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ python3-future \
+ python3-requests \
+ python3-pyjwt \
+ python3-requests-toolbelt \
+ "
diff --git a/templates/feature/agl-offline-voice-agent/50_local.conf.inc b/templates/feature/agl-offline-voice-agent/50_local.conf.inc
index 6276b075..4c80ecb2 100644
--- a/templates/feature/agl-offline-voice-agent/50_local.conf.inc
+++ b/templates/feature/agl-offline-voice-agent/50_local.conf.inc
@@ -1,11 +1,25 @@
# agl-offline-voice-agent
-
FORTRAN:forcevariable = ",fortran"
RUNTIMETARGET:append:pn-gcc-runtime = " libquadmath"
+# bad practice but required to build scikit-learn
+HOSTTOOLS += "gfortran"
+
# FIXME check if needed and/or submit upstream
BBCLASSEXTEND:pn-python3-charset-normalizer = "native nativesdk"
-IMAGE_INSTALL:append = " python3-vosk-api vosk-kaldi vosk vosk-server python3-vosk-websocket-server python3-sounddevice flutter-vosk-demo"
+IMAGE_INSTALL:append = " \
+ python3-snips-inference-agl \
+ snips-model-agl \
+ python3-rasa \
+ rasa-model-agl \
+ vosk \
+ vosk-kaldi \
+ vosk-server \
+ python3-vosk-api \
+ python3-vosk-websocket-server \
+ python3-sounddevice \
+ flutter-vosk-demo \
+ "
-PREFERRED_PROVIDER_virtual/vosk-model ?= "vosk-model-small-en-us"
+PREFERRED_PROVIDER_virtual/vosk-model ?= "vosk-model-small-en-us" \ No newline at end of file
diff --git a/templates/feature/agl-offline-voice-agent/README_feature_agl-offline-voice-agent.md b/templates/feature/agl-offline-voice-agent/README_feature_agl-offline-voice-agent.md
index fe44a6af..abe9b062 100644
--- a/templates/feature/agl-offline-voice-agent/README_feature_agl-offline-voice-agent.md
+++ b/templates/feature/agl-offline-voice-agent/README_feature_agl-offline-voice-agent.md
@@ -1,9 +1,10 @@
---
description: Feature agl-offline-voice-agent
-authors: Aman Arora <aman.arora9848@gmail.com>
+authors: Malik Talha <talhamalik727x@gmail.com>, Aman Arora <aman.arora9848@gmail.com>
---
### Feature agl-offline-voice-agent
- Feature template for meta-offline-voice-agent layer.
-- Vosk Voice Model included: vosk-model-small-en-us
+- Snips and RASA framework included.
+- Vosk Voice Model included: vosk-model-small-en-us.