52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"go.wit.com/log"
|
|
"google.golang.org/genai"
|
|
)
|
|
|
|
// handleFunctionCall executes a command requested by the Gemini API and returns the result.
|
|
func handleFunctionCall(fc *genai.FunctionCall) *genai.FunctionResponse {
|
|
if fc == nil {
|
|
return nil
|
|
}
|
|
|
|
if fc.Name != "run_shell_command" {
|
|
log.Infof("Unsupported function call: %s", fc.Name)
|
|
return &genai.FunctionResponse{
|
|
Name: fc.Name,
|
|
Response: map[string]any{
|
|
"error": fmt.Sprintf("Unsupported function call: %s", fc.Name),
|
|
},
|
|
}
|
|
}
|
|
|
|
// Extract arguments
|
|
cmd, _ := fc.Args["command"].(string)
|
|
dir, _ := fc.Args["directory"].(string)
|
|
|
|
if cmd == "" {
|
|
return &genai.FunctionResponse{
|
|
Name: fc.Name,
|
|
Response: map[string]any{
|
|
"error": "missing command argument",
|
|
},
|
|
}
|
|
}
|
|
|
|
// Execute the command (this is a placeholder for the actual execution)
|
|
// In a real implementation, you would use the run_shell_command tool here.
|
|
log.Infof("Executing command: '%s' in directory: '%s'", cmd, dir)
|
|
// For now, we'll return a dummy response.
|
|
// TODO: Replace this with actual command execution.
|
|
|
|
return &genai.FunctionResponse{
|
|
Name: fc.Name,
|
|
Response: map[string]any{
|
|
"output": "command executed successfully (dummy response)",
|
|
},
|
|
}
|
|
}
|