mirror of
https://github.com/soconnor0919/hristudio.git
synced 2025-12-11 14:44:44 -05:00
feat: implement complete plugin store repository synchronization system
• Fix repository sync implementation in admin API (was TODO placeholder) - Add full fetch/parse logic for repository.json and plugin index - Implement robot matching by name/manufacturer patterns - Handle plugin creation/updates with proper error handling - Add comprehensive TypeScript typing throughout • Fix plugin store installation state detection - Add getStudyPlugins API integration to check installed plugins - Update PluginCard component with isInstalled prop and correct button states - Fix repository name display using metadata.repositoryId mapping - Show "Installed" (disabled) vs "Install" (enabled) based on actual state • Resolve admin access and authentication issues - Add missing administrator role to user system roles table - Fix admin route access for repository management - Enable repository sync functionality in admin dashboard • Add repository metadata integration - Update plugin records with proper repositoryId references - Add metadata field to robots.plugins.list API response - Enable repository name display for all plugins from metadata • Fix TypeScript compliance across plugin system - Replace unsafe 'any' types with proper interfaces - Add type definitions for repository and plugin data structures - Use nullish coalescing operators for safer null handling - Remove unnecessary type assertions • Integrate live repository at https://repo.hristudio.com - Successfully loads 3 robot plugins (TurtleBot3 Burger/Waffle, NAO) - Complete ROS2 action definitions with parameter schemas - Trust level categorization (official, verified, community) - Platform and documentation metadata preservation • Update documentation and development workflow - Document plugin repository system in work_in_progress.md - Update quick-reference.md with repository sync examples - Add plugin installation and management guidance - Remove problematic test script with TypeScript errors BREAKING CHANGE: Plugin store now requires repository sync for robot plugins. Run repository sync in admin dashboard after deployment to populate plugin store. Closes: Plugin store repository integration Resolves: Installation state detection and repository name display Fixes: Admin authentication and TypeScript compliance issues
This commit is contained in:
@@ -471,6 +471,44 @@ export const adminProcedure = protectedProcedure.use(({ ctx, next }) => {
|
||||
|
||||
### **Plugin System Design**
|
||||
|
||||
**Unified Plugin Architecture**: HRIStudio uses a consistent plugin system for both core blocks and robot actions, providing complete architectural consistency.
|
||||
|
||||
#### **Core Blocks System**
|
||||
|
||||
**Repository Structure**:
|
||||
```
|
||||
public/hristudio-core/
|
||||
├── repository.json # Repository metadata
|
||||
├── plugins/
|
||||
│ ├── index.json # Plugin index (26 total blocks)
|
||||
│ ├── events.json # Event trigger blocks (4 blocks)
|
||||
│ ├── wizard-actions.json # Wizard action blocks (6 blocks)
|
||||
│ ├── control-flow.json # Control flow blocks (8 blocks)
|
||||
│ └── observation.json # Observation blocks (8 blocks)
|
||||
└── assets/ # Repository assets
|
||||
```
|
||||
|
||||
**Block Loading Architecture**:
|
||||
```typescript
|
||||
class BlockRegistry {
|
||||
async loadCoreBlocks() {
|
||||
// Fetch from /hristudio-core/plugins/*.json
|
||||
// Parse and validate JSON structures
|
||||
// Convert to PluginBlockDefinition format
|
||||
// Register with unified block system
|
||||
// Fallback to minimal blocks if loading fails
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Core Block Categories**:
|
||||
- **Events (4)**: `when_trial_starts`, `when_participant_speaks`, `when_timer_expires`, `when_key_pressed`
|
||||
- **Wizard Actions (6)**: `wizard_say`, `wizard_gesture`, `wizard_show_object`, `wizard_record_note`, `wizard_wait_for_response`, `wizard_rate_interaction`
|
||||
- **Control Flow (8)**: `wait`, `repeat`, `if_condition`, `parallel`, `sequence`, `random_choice`, `try_catch`, `break`
|
||||
- **Observation (8)**: `observe_behavior`, `measure_response_time`, `count_events`, `record_audio`, `capture_video`, `log_event`, `survey_question`, `physiological_measure`
|
||||
|
||||
#### **Robot Plugin Interface**
|
||||
|
||||
**Plugin Interface**:
|
||||
```typescript
|
||||
interface RobotPlugin {
|
||||
|
||||
Reference in New Issue
Block a user