gitdataai/libs/service/project_tools/mod.rs

105 lines
3.3 KiB
Rust

//! Project tools for AI agent function calling.
//!
//! Tools that let the agent perceive and modify the current project context:
//! - list repos in the project
//! - list members in the project
//! - list / create / update issues
//! - list / create / update boards and board cards
mod arxiv;
mod boards;
mod curl;
mod issues;
mod members;
mod repos;
use agent::{ToolHandler, ToolRegistry};
pub use arxiv::arxiv_search_exec;
pub use boards::{
create_board_card_exec, create_board_exec, delete_board_card_exec, list_boards_exec,
update_board_card_exec, update_board_exec,
};
pub use curl::curl_exec;
pub use issues::{create_issue_exec, list_issues_exec, update_issue_exec};
pub use members::list_members_exec;
pub use repos::{create_commit_exec, create_repo_exec, list_repos_exec, update_repo_exec};
pub fn register_all(registry: &mut ToolRegistry) {
// arxiv
registry.register(
arxiv::tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(arxiv_search_exec(ctx, args))),
);
// curl
registry.register(
curl::tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(curl_exec(ctx, args))),
);
// repos
registry.register(
repos::list_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(list_repos_exec(ctx, args))),
);
registry.register(
repos::create_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(create_repo_exec(ctx, args))),
);
registry.register(
repos::update_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(update_repo_exec(ctx, args))),
);
registry.register(
repos::create_commit_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(create_commit_exec(ctx, args))),
);
// members
registry.register(
members::tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(list_members_exec(ctx, args))),
);
// issues
registry.register(
issues::list_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(list_issues_exec(ctx, args))),
);
registry.register(
issues::create_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(create_issue_exec(ctx, args))),
);
registry.register(
issues::update_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(update_issue_exec(ctx, args))),
);
// boards
registry.register(
boards::list_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(list_boards_exec(ctx, args))),
);
registry.register(
boards::create_board_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(create_board_exec(ctx, args))),
);
registry.register(
boards::update_board_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(update_board_exec(ctx, args))),
);
registry.register(
boards::create_card_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(create_board_card_exec(ctx, args))),
);
registry.register(
boards::update_card_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(update_board_card_exec(ctx, args))),
);
registry.register(
boards::delete_card_tool_definition(),
ToolHandler::new(|ctx, args| Box::pin(delete_board_card_exec(ctx, args))),
);
}