Added mkdir using vibe tool.

This commit is contained in:
retoor 2025-03-28 23:11:55 +01:00
parent 57384d9ba6
commit 619b231e8d

64
tools.h
View File

@ -48,6 +48,7 @@ struct json_object *tool_description_db_query();
struct json_object *tool_description_db_get();
struct json_object *tool_description_web_search_news();
struct json_object *tool_description_web_search();
struct json_object *tool_description_mkdir();
struct json_object *tools_descriptions() {
struct json_object *root = json_object_new_array();
@ -66,6 +67,7 @@ struct json_object *tools_descriptions() {
json_object_array_add(root, tool_description_db_get());
json_object_array_add(root, tool_description_web_search_news());
json_object_array_add(root, tool_description_web_search());
json_object_array_add(root, tool_description_mkdir());
return root;
}
@ -1042,6 +1044,52 @@ struct json_object *tool_description_linux_terminal() {
return root;
}
char *tool_function_mkdir(char *path) {
if (mkdir(path, 0777) != 0) {
perror("mkdir failed");
return strdup("Failed to create directory!");
}
return strdup("Directory successfully created.");
}
struct json_object *tool_description_mkdir() {
struct json_object *root = json_object_new_object();
json_object_object_add(root, "type", json_object_new_string("function"));
struct json_object *function = json_object_new_object();
json_object_object_add(function, "name", json_object_new_string("mkdir"));
json_object_object_add(
function, "description",
json_object_new_string("Creates a new directory with the specified path."));
struct json_object *parameters = json_object_new_object();
json_object_object_add(parameters, "type", json_object_new_string("object"));
struct json_object *properties = json_object_new_object();
struct json_object *path = json_object_new_object();
json_object_object_add(path, "type", json_object_new_string("string"));
json_object_object_add(
path, "description",
json_object_new_string("Path of the directory to create."));
json_object_object_add(properties, "path", path);
json_object_object_add(parameters, "properties", properties);
struct json_object *required = json_object_new_array();
json_object_array_add(required, json_object_new_string("path"));
json_object_object_add(parameters, "required", required);
json_object_object_add(parameters, "additionalProperties",
json_object_new_boolean(0));
json_object_object_add(function, "parameters", parameters);
json_object_object_add(function, "strict", json_object_new_boolean(1));
json_object_object_add(root, "function", function);
return root;
}
struct json_object *tools_execute(struct json_object *tools_array) {
struct json_object *tools_result_messages = json_object_new_array();
int array_len = json_object_array_length(tools_array);
@ -1311,6 +1359,21 @@ struct json_object *tools_execute(struct json_object *tools_array) {
free(listing_result);
}
}
} else if (!strcmp(function_name, "mkdir")) {
struct json_object *arguments_obj;
if (json_object_object_get_ex(function_obj, "arguments",
&arguments_obj)) {
struct json_object *arguments =
json_tokener_parse(json_object_get_string(arguments_obj));
struct json_object *path_obj;
if (json_object_object_get_ex(arguments, "path", &path_obj)) {
char *path = (char *)json_object_get_string(path_obj);
char *mkdir_result = tool_function_mkdir(path);
json_object_object_add(tool_result, "content",
json_object_new_string(mkdir_result));
free(mkdir_result);
}
}
} else {
fprintf(stderr, "Unknown function: %s\n", function_name);
json_object_object_add(
@ -1325,4 +1388,3 @@ struct json_object *tools_execute(struct json_object *tools_array) {
}
#endif