Skip to content

Conversation

@enkerewpo
Copy link
Member

@enkerewpo enkerewpo commented Dec 12, 2025

see issue #8 and whitepaper for API and design details

features:

  1. rust robonix core + cli
  2. RustDDS as DDS implementation
  3. robonix package manager and recipe system, along with process group based runtime management
5e37c2f0a22ef5546c1871f55a777ff4 5184bbcf5c23e21c0f6eb89308a69a3a 25c06213ca4d5d0f0bd9b6ab61199632 image

- Added Dockerfile and entrypoint script for Tailscale integration.
- Introduced .env.template for environment variable configuration.
- Removed robonix.png and updated README to reflect changes.
- Cleaned up .gitignore to include new directories and files.
- Added core functionality for managing capabilities and skills in Robonix.
- Implemented registration service with request and response handling.
- Introduced message structures for registration requests and responses.
- Created a Docker entrypoint script to source ROS2 environment.
- Added .gitignore and Cargo configuration for Rust project setup.
- Included test script for registering a Camera capability via ROS2 service call.
- Introduced a new demo RGB camera provider that publishes random color images.
- Added registration service with enhanced request and response structures.
- Implemented validation for capabilities and skills against specifications.
- Updated Docker setup to include Rust installation and environment configuration.
- Added scripts for starting and stopping the demo provider.
- Cleaned up and organized project structure, including new package files and configurations.wq
- Added new submodule for rust/ros2-client to facilitate message generation.
- Renamed 'type' field to 'provider_type' in RegisterRequest and Register.srv for clarity.
- Introduced a script to generate Rust structures from the Register.srv file.
- Generated new Rust file for Register service structure.
- Added submodules for rust/rcl_interfaces and rust/common_interfaces to enhance project structure.
- Updated .gitmodules to include new submodule paths and URLs.
- Updated the test_gen.sh script to generate Rust structures for Image and PointCloud2 messages.
- Added new Rust files for Image and PointCloud2 message structures, including necessary fields and documentation.
- Ensured compatibility with ROS2 Humble by forcing the installation of empy version 3.3.4.
- Added installation of the lark parser required by rosidl_parser.
- Commented out unused environment variables in Dockerfile for clarity.
- Added a new README file for Rust with package management instructions.
- Updated .gitignore to include additional files for better management.
- Removed obsolete db.json file from the Rust provider.
- Introduced new commands and refactored existing ones in the Rust CLI for improved functionality and organization.
- Enhanced process management and recipe handling in the Rust codebase.
- Added new modules for command execution and improved package registration and unregistration processes.
- Added ca-certificates installation to Dockerfile for improved security.
- Updated Rust README with installation instructions for demo packages.
- Refined .gitignore to include demo package files.
- Introduced a new output module in Rust CLI for consistent logging and messaging.
- Enhanced package installation and registration processes with improved user feedback and validation steps.
- Enhanced the `stop_process` method to drop the lock before saving state, improving concurrency.
- Introduced new command structures for package management and deployment, including `PackageCommands` and `DeployCommands`.
- Updated the `execute` function to handle new command subcommands for better organization.
- Improved status command to ensure it only shows packages from an active recipe and added checks for running processes before unregistering.
- Deleted the old README file and replaced it with a comprehensive markdown version for better clarity on usage and installation.
- Introduced a new `update_map` skill in the demo package, including start and stop scripts for improved functionality.
- Updated the `setup.py` to include the new `update_map_skill` entry point.
- Enhanced the `PickSkill` class to utilize the new RobonixSDK for better integration with the core system.
- Added new services and message structures for managing AI models and spatial maps, improving the overall architecture of the Robonix system.
- Updated various scripts to ensure compatibility with the new message and service definitions.
- Refined the Rust CLI configuration to support optional paths for the Robonix message system, enhancing flexibility for users.
- Added optional `impl_id` field to capabilities and skills in PACKAGE_SPEC.md for distinguishing multiple implementations.
- Updated Rust code to handle `impl_id` in registration and querying processes, defaulting to "default" if omitted.
- Enhanced query responses to include available implementation IDs for capabilities and skills.
- Modified client-side code to support `impl_id` in queries and registrations, improving flexibility in usage.
- Clarified the method for setting the ROBONIX_MODEL_API_KEY in the README, allowing users to either export the key or add it directly to the command line for model registration.
- Revised the PACKAGE_SPEC.md to clarify the registration and deployment commands, emphasizing the use of `rbnx deploy register` instead of `rbnx register`.
- Enhanced the explanation of capability and skill parameters, including mandatory fields and their mappings.
- Updated demo_recipe.yaml to reflect the new command structure for registering capabilities and skills.
- Added detailed steps for the deployment workflow, including process management commands for starting, stopping, and unregistering capabilities and skills.
- Introduced a new daemon management system in the Rust CLI, allowing users to start, stop, and check the status of the daemon.
- Added a ping service for testing concurrent service calls, improving system responsiveness and reliability.
- Refactored existing commands to utilize the daemon for process management, enhancing overall command execution flow.
- Updated the Rust CLI to ensure proper handling of daemon responses, including error management and logging.
- Enhanced the Dockerfile to support the new daemon structure and dependencies.
- Changed the socket and state directory paths from hardcoded values to user-specific directories under ~/.robonix, improving user experience and flexibility.
- Updated related code in daemon_client, daemon, process, and model modules to reflect the new directory structure.
- Enhanced README with additional build instructions for robonix-msg.
- Refactored the daemon startup logic to enhance error handling and provide clearer feedback if the daemon fails to start.
- Introduced a new method to locate the daemon executable in various common paths, improving flexibility for users.
- Added checks to ensure the daemon process starts successfully and that the necessary socket files are created, guiding users to troubleshoot if issues arise.
- Updated logging to provide more informative messages during the daemon initialization process.
- Improved error logging in `PickSkill` and `UpdateMapSkill` classes to provide detailed feedback on failures when creating the `RobonixClient` and querying capabilities.
- Added signal handling for graceful shutdown in both skills, ensuring proper cleanup and logging during termination.
- Refactored the entity generation process in `UpdateMapSkill` to simplify the addition of entities to the semantic map.
- Updated the build script to enhance environment setup and package building process.
- Added detailed response format to the daemon commands, including process IDs and group information for better tracking of running processes.
- Introduced a spinner for animated progress indication in CLI commands, enhancing user experience during start/stop operations.
- Updated README with additional build instructions and usage examples for the new daemon features.
- Refactored command execution methods to utilize the new response structure, providing clearer feedback on process management actions.
- Introduced a new task management system to handle task lifecycle, including creation, retrieval, listing, and cancellation of tasks.
- Added DSL generation capabilities to convert natural language input into executable DSL code using AI models.
- Implemented a skill executor to execute DSL instructions, enhancing the system's ability to perform tasks based on generated DSL.
- Refactored the planning module to integrate task management and DSL generation, improving overall workflow efficiency.
- Updated the README with detailed instructions on the new task management features and usage examples.
- Changed section title from "完整工作流程" to "workflow" for consistency.
- Removed outdated code examples related to adding entities to the semantic map and querying capabilities, streamlining the documentation.
- Enhanced clarity of the workflow description and updated related instructions to reflect recent changes in the system.
- Deleted the fast.xml file from the Docker shared directory, which contained outdated transport and participant configurations for the Tailscale transport.
- Introduced a new service and primitive abstraction layer to standardize hardware capability mapping and management.
- Added support for registering and querying primitives and services, enhancing the system's modularity and flexibility.
- Updated the README to reflect the new architecture and provide usage examples for the service and primitive functionalities.
- Refactored existing code to integrate the new modules, improving overall system organization and maintainability.
- Removed obsolete files and services to streamline the codebase and reduce complexity.
- Introduced a sample Docker environment configuration file to streamline the setup process for users.
- Added new RTDL files for the `update_map` skill and several EAIOS spec services, including `QueryPrimitive`, `QueryService`, `QuerySkill`, `RegisterPrimitive`, `RegisterService`, `SubmitTask`, `TaskResult`, and `TaskStatus`.
- These additions enhance the modularity and functionality of the Robonix framework, providing a clearer structure for service and skill definitions.
- Deleted several service definition files including `QueryPrimitive`, `QueryService`, `QuerySkill`, `RegisterPrimitive`, `RegisterService`, `SubmitTask`, `TaskResult`, and `TaskStatus` to streamline the codebase and eliminate outdated components.
- Updated documentation and scripts to reflect the renaming of `robonix-msg` to `robonix-sdk`, including changes in build instructions and configuration paths.
- Enhanced the package specification to include versioning for primitives and services, allowing for better management of multiple implementations.
- Introduced new service and message definitions in the `robonix-sdk`, streamlining the integration of skills and primitives.
- Removed obsolete `robonix-msg` files and updated references throughout the codebase to ensure consistency with the new architecture.
- Improved error handling and logging in the client library to enhance user experience and debugging capabilities.
- Introduced new message types: `PrimitiveInstance`, `ServiceInstance`, and `SkillInstance` to facilitate communication within the Robonix framework.
- Added service definitions for `RegisterPrimitive`, `RegisterService`, and `RegisterSkill`, enhancing the ability to register and manage primitives and services.
- Created a Python client library (`robonixpy`) to provide a high-level interface for interacting with Robonix services, including methods for querying and registering primitives and skills.
- Established a CMake configuration for building the package and managing dependencies, ensuring a streamlined build process.
- Deleted the CMake configuration file and several message files including `PrimitiveInstance.msg`, `ServiceInstance.msg`, and `SkillInstance.msg`, as well as service definitions for `RegisterPrimitive`, `RegisterService`, and `RegisterSkill`.
- Removed the Python client library files to streamline the codebase and eliminate outdated components, ensuring a cleaner architecture moving forward.
@enkerewpo enkerewpo requested review from KouweiLee, Copilot and ken4647 and removed request for ken4647 December 15, 2025 01:28
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements a comprehensive Rust-based robonix system according to the EAIOS whitepaper, introducing a core service registry, CLI tooling, package management, and ROS2 integration through RustDDS.

Key changes:

  • Implements robonix-core with primitive, service, skill, and task management APIs
  • Adds robonix-cli for package lifecycle management (install, register, deploy, start/stop)
  • Integrates robonix-sdk with ROS2 message definitions and Python client library
  • Provides process management with daemon-based execution and logging

Reviewed changes

Copilot reviewed 123 out of 218 changed files in this pull request and generated no comments.

Show a summary per file
File Description
rust/robonix-core/Cargo.toml Defines dependencies for the core system with ros2-client and async runtime
rust/robonix-core/src/main.rs Entry point creating ROS2 service servers for primitive/service/skill/task APIs
rust/robonix-core/src/core.rs Coordinates all robonix modules (task manager, skill library, registries)
rust/robonix-core/src/spec.rs Defines specifications and validation for primitives and services
rust/robonix-core/src/specs_table.rs Loads standard primitive and service specifications
rust/robonix-core/src/primitive/primitive.rs Handles primitive registration and querying with schema validation
rust/robonix-core/src/service/service.rs Manages service registration and discovery
rust/robonix-core/src/skill_library/skill.rs Implements skill registration supporting basic and RTDL types
rust/robonix-core/src/task_manager/task.rs Task lifecycle management with state tracking
rust/robonix-cli/src/main.rs CLI entry point with database sync on startup
rust/robonix-cli/src/daemon.rs Unix socket-based daemon for process management
rust/robonix-cli/src/process.rs Process group management with tree tracking and logging
rust/robonix-cli/src/register.rs Registers primitives/services/skills from recipe with ROS2 core
rust/robonix-cli/src/install.rs Installs packages from GitHub or local paths
rust/robonix-sdk/build_ros2.sh Builds ROS2 interface package with system Python
rust/robonix-sdk/CMakeLists.txt Generates ROS2 interfaces from msg/srv definitions
rust/robonix-sdk/robonixpy/client.py Thread-safe Python client for robonix core services
Comments suppressed due to low confidence (5)

rust/robonix-core/src/main.rs:1

  • The process name defaults to "eaios-core" but the binary is named "robonix-core". Update the default to "robonix-core" for consistency.
    rust/robonix-core/src/core.rs:1
  • The variable task_manager is declared as mutable but never mutated. Remove the mut keyword.
    rust/robonix-sdk/robonixpy/client.py:1
  • Explicit type annotations for client_guard are unnecessary and reduce readability. The type can be inferred by the compiler.
    rust/robonix-cli/src/register.rs:1
  • The input_schema_str is extracted twice (lines 232-234 and 236-238). Remove the duplicate extraction on lines 236-238.
    rust/robonix-cli/src/process.rs:1
  • The variable is_new_line is set to true but then immediately set to true again at line 396 without being used between. The logic should check if a line was written before setting it back to true.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Introduced a new Ping Pong service with request and response message definitions for testing.
- Implemented two high-intensity load testing clients (`ping_client_1.py` and `ping_client_2.py`) to evaluate concurrent access to the Ping Pong service.
- Added a README for the service load test, detailing usage instructions and expected behavior.
- Created a script (`run_test.sh`) to facilitate simultaneous execution of both test clients.
…uctions

- Deleted the `env.example` file to streamline the configuration process.
- Updated the README to reflect changes in the usage of the .env file and removed outdated credential examples for GitHub Container Registry.
- Removed detailed manual setup steps and Docker instructions from the main README to simplify the quick start guide.
- Updated the README to direct users to the `rust/README.md` for comprehensive setup instructions.
… and related modules

- Enhanced error messages for socket directory creation and connection failures in `daemon_client.rs`.
- Improved code formatting for better readability across multiple files, including `daemon.rs`, `process.rs`, and various command modules.
- Streamlined the handling of command responses and improved the structure of async functions in the command modules.
- Removed unnecessary whitespace and ensured consistent formatting in several files to maintain code quality.
Copy link
Contributor

@KouweiLee KouweiLee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐂

@KouweiLee KouweiLee merged commit f8ef005 into syswonder:main Dec 23, 2025
1 check passed
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.

2 participants