From 649c381f3d2be18958aa633e6bc950e80bfe7553 Mon Sep 17 00:00:00 2001 From: M3gA-Mind Date: Tue, 31 Mar 2026 19:22:37 +0530 Subject: [PATCH] feat: set up openhuman-skills git submodule - Add openhuman-skills submodule pointing to tinyhumansai/openhuman-skills - Remove openhuman-skills from .gitignore so the submodule is tracked - Update skill discovery paths in qjs_engine.rs from skills/skills to openhuman-skills/skills (dev cwd, parent, and bundled resource paths) Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 1 - .gitmodules | 3 +++ CONTRIBUTING.md | 15 +++++++++++++++ openhuman-skills | 1 + src/openhuman/skills/qjs_engine.rs | 10 +++++----- 5 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 .gitmodules create mode 160000 openhuman-skills diff --git a/.gitignore b/.gitignore index 478a96b34..6ba151d1a 100644 --- a/.gitignore +++ b/.gitignore @@ -53,5 +53,4 @@ tauri.key.pub /target/ src-tauri/target/ -openhuman-skills workflow \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..b3cb4a18a --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "openhuman-skills"] + path = openhuman-skills + url = https://github.com/tinyhumansai/openhuman-skills diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6650b7654..5bb4d0988 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,11 +35,26 @@ This project adheres to the [Contributor Covenant Code of Conduct](CODE_OF_CONDU ```bash git clone https://github.com/YOUR_USERNAME/openhuman.git cd openhuman +git submodule update --init --recursive # pulls openhuman-skills yarn install ``` Use your own fork in place of `YOUR_USERNAME` when cloning. +The `openhuman-skills` submodule contains the built skill bundles used by the runtime. After cloning you must initialise it (the command above does this). If you forget, the runtime will fall back to fetching skills from the remote registry, which is slower and requires network access. + +### Updating Skills + +When the `openhuman-skills` submodule is updated upstream, run: + +```bash +git submodule update --remote openhuman-skills +cd openhuman-skills && yarn install && yarn build +cd .. +git add openhuman-skills +git commit -m "chore: update openhuman-skills submodule" +``` + ### Run the App - **Web only**: `yarn dev` (Vite dev server, typically port 1420) diff --git a/openhuman-skills b/openhuman-skills new file mode 160000 index 000000000..52d58295c --- /dev/null +++ b/openhuman-skills @@ -0,0 +1 @@ +Subproject commit 52d58295c0cfbc22b5ad962fd7ae34f1efd7c000 diff --git a/src/openhuman/skills/qjs_engine.rs b/src/openhuman/skills/qjs_engine.rs index a183fb3ec..f8188a86f 100644 --- a/src/openhuman/skills/qjs_engine.rs +++ b/src/openhuman/skills/qjs_engine.rs @@ -165,16 +165,16 @@ impl RuntimeEngine { let current = std::env::current_dir().map_err(|e| format!("Failed to get current dir: {e}"))?; - // 2. Dev: cwd/skills/skills - let dev_skills = current.join("skills").join("skills"); + // 2. Dev: cwd/openhuman-skills/skills + let dev_skills = current.join("openhuman-skills").join("skills"); if dev_skills.exists() { log::info!("[runtime] Using dev skills dir: {:?}", dev_skills); return Ok(dev_skills); } - // 3. Dev: ../skills/skills + // 3. Dev: ../openhuman-skills/skills if let Some(parent) = current.parent() { - let parent_skills = parent.join("skills").join("skills"); + let parent_skills = parent.join("openhuman-skills").join("skills"); if parent_skills.exists() { log::info!("[runtime] Using parent dev skills dir: {:?}", parent_skills); return Ok(parent_skills); @@ -183,7 +183,7 @@ impl RuntimeEngine { // 4. Production: bundled resources if let Some(resource_dir) = self.resource_dir.read().as_ref() { - let bundled_skills = resource_dir.join("_up_").join("skills").join("skills"); + let bundled_skills = resource_dir.join("_up_").join("openhuman-skills").join("skills"); if bundled_skills.exists() { log::info!( "[runtime] Using bundled skills from resources: {:?}",