in pkg/tools/bash_tool.go [84:108]
func (t *BashTool) Run(ctx context.Context, args map[string]any) (any, error) {
kubeconfig := ctx.Value("kubeconfig").(string)
workDir := ctx.Value("work_dir").(string)
command := args["command"].(string)
if strings.Contains(command, "kubectl edit") {
return &ExecResult{Error: "interactive mode not supported for kubectl, please use non-interactive commands"}, nil
}
if strings.Contains(command, "kubectl port-forward") {
return &ExecResult{Error: "port-forwarding is not allowed because assistant is running in an unattended mode, please try some other alternative"}, nil
}
cmd := exec.CommandContext(ctx, bashBin, "-c", command)
cmd.Dir = workDir
cmd.Env = os.Environ()
if kubeconfig != "" {
kubeconfig, err := expandShellVar(kubeconfig)
if err != nil {
return nil, err
}
cmd.Env = append(cmd.Env, "KUBECONFIG="+kubeconfig)
}
return executeCommand(cmd)
}