Crates.io | shinkai_tools_runner |
lib.rs | shinkai_tools_runner |
version | 0.7.1-dev.14 |
source | src |
created_at | 2024-07-01 14:54:49.49226 |
updated_at | 2024-07-13 19:35:37.410239 |
description | Rust library to execute shinkai-tools in a safe and performant environment |
homepage | https://shinkai.com |
repository | |
max_upload_size | |
id | 1288774 |
size | 1,430,764 |
Shinkai Tools serves as the ecosystem to execute Shinkai tools, provided by the Shinkai team or third-party developers, in a secure environment. It provides a sandboxed space for executing these tools, ensuring that they run safely and efficiently, while also allowing for seamless integration with Rust code.
This repository is a comprehensive collection of tools and utilities designed to facilitate the integration of JavaScript and Rust code. It provides a framework for executing JavaScript scripts within a Rust environment, allowing for seamless communication and data exchange between the two languages.
The primary components of this repository include:
apps/shinkai-tool-*
These are small JavaScript tools designed to perform specific tasks. Each tool is a self-contained project with its own configuration and build process, allowing for easy maintenance and updates.libs/shinkai-tools-builder
is a TypeScript library that provides the necessary classes and types to build new tools, making it easier to create and integrate new tools into the Shinkai ecosystem.libs/shinkai-tools-runner
is a Rust library used to execute a tool in a secured and performant JavaScript environment, providing a safe and efficient way to run tools within the Shinkai ecosystem.# In windows admin privileges is required because rquickjs-sys uses a git patch
npm ci
npx nx run-many -t lint
npx nx run-many -t build
npx nx run-many -t test
To execute a tool from the Rust side, you can follow these steps:
Cargo.toml
file.Tool
struct.load
method, passing the path to the file as an argument.run
method, passing any required arguments as JSON strings.Here's an example:
use shinkai_tools_runner::built_in_tools::get_tool;
use shinkai_tools_runner::tools::tool::Tool;
#[tokio::main]
async fn main() {
let tool_definition = get_tool("shinkai-tool-echo").unwrap();
let mut tool = Tool::new();
let _ = tool
.load_from_code(&tool_definition.code.clone().unwrap(), "")
.await;
let run_result = tool.run("{ \"message\": \"new york\" }").await.unwrap();
assert_eq!(run_result.data["message"], "echoing: new york");
}
To add a new Shinkai tool to this project, follow these simple steps:
npx hygen shinkai-tool new
to create a new tool. This command will guide you through the process of creating a new tool, including setting up the directory structure and generating the necessary files.That's it! With this single command, you'll have a new Shinkai tool set up and ready to go.