TOOLS
This commit is contained in:
56
scripts/tool_call.cpp
Normal file
56
scripts/tool_call.cpp
Normal file
@@ -0,0 +1,56 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <windows.h>
|
||||
#include <process.h>
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
if (argc < 2) {
|
||||
std::cerr << "No tool name provided" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::string tool_name = argv[1];
|
||||
|
||||
// Construct the command: uv run python scripts/tool_call.py <tool_name>
|
||||
std::string command = "uv run python scripts/tool_call.py " + tool_name;
|
||||
|
||||
// Use CreateProcess to run the command and handle pipes
|
||||
STARTUPINFOA si;
|
||||
PROCESS_INFORMATION pi;
|
||||
ZeroMemory(&si, sizeof(si));
|
||||
si.cb = sizeof(si);
|
||||
si.dwFlags = STARTF_USESTDHANDLES;
|
||||
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
|
||||
si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
|
||||
ZeroMemory(&pi, sizeof(pi));
|
||||
|
||||
// Create the process
|
||||
if (!CreateProcessA(
|
||||
NULL,
|
||||
(char*)command.c_str(),
|
||||
NULL,
|
||||
NULL,
|
||||
TRUE,
|
||||
0,
|
||||
NULL,
|
||||
NULL,
|
||||
&si,
|
||||
&pi
|
||||
)) {
|
||||
std::cerr << "CreateProcess failed (" << GetLastError() << ")" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Wait for the process to finish
|
||||
WaitForSingleObject(pi.hProcess, INFINITE);
|
||||
|
||||
DWORD exit_code;
|
||||
GetExitCodeProcess(pi.hProcess, &exit_code);
|
||||
|
||||
CloseHandle(pi.hProcess);
|
||||
CloseHandle(pi.hThread);
|
||||
|
||||
return exit_code;
|
||||
}
|
||||
Reference in New Issue
Block a user