Skip to content

feat(skills): registry-based skill management + RPC state migration#98

Merged
senamakel merged 13 commits into
tinyhumansai:mainfrom
senamakel:fix/vision-fixes
Mar 30, 2026
Merged

feat(skills): registry-based skill management + RPC state migration#98
senamakel merged 13 commits into
tinyhumansai:mainfrom
senamakel:fix/vision-fixes

Conversation

@senamakel
Copy link
Copy Markdown
Member

Summary

  • Skills Registry System: Introduces a registry-based skill management flow between the openhuman-skills repo and the Rust core. Skills are discovered from a remote registry.json, downloaded as JS bundles, and executed in the QuickJS runtime.
  • RPC-backed Skill State: Migrates skill state reads from Redux to RPC calls to the Rust core sidecar. SkillSnapshot now includes setup_complete (persisted in preferences) and connection_status (derived server-side), eliminating Redux/Rust state sync bugs.
  • OAuth Flow Fixes: OAuth skills (Notion, Gmail) now work without needing the QuickJS runtime started first. The setup wizard shows the OAuth login directly, and deep link callbacks persist setup completion via RPC.
  • Tauri Shell Fixes: Added opener plugin + window permissions for deep link and OAuth URL handling.

Key Changes

Rust Core:

  • registry_types.rs, registry_ops.rs — registry fetch, search, install, uninstall with SHA-256 verification
  • preferences.rs — extended with setup_complete persistence
  • types.rsSkillSnapshot enriched with setup_complete + connection_status derivation
  • schemas.rs — 4 new RPC endpoints (set_setup_complete, get_all_snapshots, skills_install, skills_uninstall, etc.)
  • qjs_engine.rs — dual-directory discovery (bundled + workspace), workspace_dir support

Frontend:

  • skillsApi.ts — imperative RPC wrapper for all skill operations
  • skillEvents.ts — event bus bridging Tauri events to React hooks
  • hooks.ts — rewritten with RPC-backed hooks (useSkillSnapshot, useAvailableSkills, useSkillConnectionStatus)
  • Skills.tsx — loads from registry via RPC, no Redux dispatch
  • SkillSetupWizard.tsx — reads manifest from registry, skips runtime start for OAuth skills
  • runtime.ts — uses openhuman.skills_start RPC instead of missing Tauri command
  • desktopDeepLinkListener.ts — persists setup completion via RPC + emits skill events

Skills Repo:

  • generate-registry.mjs — build script producing registry.json with checksums
  • test-registry.mjs — validates generated registry

Test plan

  • cargo check — Rust compiles
  • cargo test -p openhuman --lib -- registry — 21 unit tests pass
  • cargo test --test json_rpc_e2e -- json_rpc_skills — E2E test passes (fetch → search → install → list → uninstall)
  • npx tsc --noEmit — TypeScript compiles
  • Skills page loads available skills from registry
  • Clicking Notion opens OAuth flow without runtime errors
  • OAuth deep link marks skill as connected
  • Full E2E with built app bundle

🤖 Generated with Claude Code

senamakel and others added 13 commits March 30, 2026 15:37
…ment

- Simplified the syntax of RPC method calls in the `tauriCommands.ts` file by removing unnecessary line breaks, enhancing code readability.
- Updated descriptions in the `schemas.rs` file to maintain consistent formatting for RPC method descriptions, improving documentation clarity.
- Introduced a new action `setSkillStatus` to manage the skill's connection status.
- Updated the OAuth deep link handling to dispatch the skill status as 'ready' upon successful connection, improving state management for skills.
- Added a `CaptureMode` enum to differentiate between windowed and fullscreen screenshot captures.
- Enhanced the `capture_screen_image_ref_for_context` function to determine capture mode based on window bounds, with fallback to fullscreen.
- Implemented logic to downscale screenshots exceeding size limits when captured in fullscreen mode.
- Introduced a new `parse_foreground_output` function to parse application context from AppleScript output, improving context retrieval for screenshots.
…creation

- Modified the TAURI_CONFIG_OVERRIDE to exclude the creation of updater artifacts during the build process, streamlining the build workflow.
… functionality

- Introduced new properties `captureTestResult` and `isCaptureTestRunning` to the `AccessibilityState` interface for managing capture test states.
- Added `CaptureTestResult` and `CaptureTestContextInfo` interfaces to define the structure of capture test results.
- Implemented `openhumanScreenIntelligenceCaptureTest` function to initiate screen intelligence capture tests, improving accessibility features.
…tics

- Introduced a new `ScreenIntelligenceDebugPanel` component to display accessibility status, session information, and capture test results.
- Integrated the debug panel into the existing `ScreenIntelligencePanel`, allowing users to expand and collapse the debug section.
- Updated accessibility state management to include `captureTestResult` and `isCaptureTestRunning` for improved testing feedback.
- Enhanced test setup to accommodate new debug functionalities.
…nce items

- Added `useScreenIntelligenceItems` hook to fetch and manage screen intelligence items from the accessibility state.
- Integrated the hook into the `Intelligence` component, combining items from both memory and screen intelligence sources.
- Enhanced loading state management to reflect the combined loading status of both data sources.
…ems mapping and confidenceToPriority functions

- Introduced tests for the mapping logic of AccessibilityVisionSummary to ActionableItem, ensuring correct transformation of properties.
- Added tests for confidenceToPriority function to validate priority assignment based on confidence levels.
- Included edge cases such as handling empty arrays, null app names, and long actionable notes truncation.
- Refactored mnemonic import logic to accommodate BIP39 phrase lengths (12, 15, 18, 21, 24 words).
- Updated state initialization and validation to dynamically adjust based on the allowed word counts.
- Enhanced user prompts to reflect the new word count options for recovery phrases.
- Adjusted focus handling for input fields to improve user experience during phrase entry.
- Replaced Redux-based skill state management with RPC-backed hooks for improved performance and reactivity.
- Introduced `useSkillSnapshot` and `useAllSkillSnapshots` hooks to fetch skill states directly from the Rust core.
- Updated components to utilize the new hooks, enhancing the overall architecture and reducing dependency on Redux.
- Added event listeners to trigger state updates in response to skill state changes, ensuring real-time updates across the application.
… test

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@senamakel senamakel merged commit 777c98e into tinyhumansai:main Mar 30, 2026
2 of 5 checks passed
@senamakel senamakel deleted the fix/vision-fixes branch March 31, 2026 00:55
senamakel added a commit that referenced this pull request May 14, 2026
…1634)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
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.

1 participant