added command execution via !

This commit is contained in:
Luxferre
2026-08-15 16:58:25 +03:00
parent 4b55c27fee
commit 4509851243
3 changed files with 41 additions and 4 deletions
+22 -2
View File
@@ -1241,7 +1241,18 @@ func main() {
fmt.Println(c("Error: file '"+p+"' not found.", 31))
os.Exit(1)
}
msgs = append(msgs, Message{Role: "user", Content: strp(strings.TrimSpace(string(data)))})
u := strings.TrimSpace(string(data))
if strings.HasPrefix(u, "!") {
cmd := strings.TrimSpace(strings.TrimPrefix(u, "!"))
if cmd != "" {
astr, _ := json.Marshal(map[string]string{"command": cmd})
fmt.Println(c(fmt.Sprintf("[tool call: shell_exec(%s)]", string(astr)), 33))
res := shell(cmd, cfg.ShellTimeout)
fmt.Println(c("[tool result: shell_exec]", 32) + "\n" + c(res, 2))
}
return
}
msgs = append(msgs, Message{Role: "user", Content: strp(u)})
if msgs, err = AL(&cfg, msgs, sp, 0); err != nil {
fmt.Println(c("[error: "+err.Error()+"]", 31))
os.Exit(1)
@@ -1338,9 +1349,18 @@ func main() {
fmt.Println(c("Usage: /cfg <param> [val]", 31))
}
continue
case strings.HasPrefix(u, "!"):
cmd := strings.TrimSpace(strings.TrimPrefix(u, "!"))
if cmd != "" {
astr, _ := json.Marshal(map[string]string{"command": cmd})
fmt.Println(c(fmt.Sprintf("[tool call: shell_exec(%s)]", string(astr)), 33))
res := shell(cmd, cfg.ShellTimeout)
fmt.Println(c("[tool result: shell_exec]", 32) + "\n" + c(res, 2))
}
continue
case u == "/help":
fmt.Println(c("Bantam commands:", 1, 36))
for _, kv := range [][2]string{{"/quit", "exit"}, {"/clear", "reset to system prompt"}, {"/save", "save session"}, {"/list", "list sessions"}, {"/load <id>", "load session"}, {"/compact", "compact context"}, {"/cfg <k> [v]", "get/set config"}, {"/help", "show help"}} {
for _, kv := range [][2]string{{"/quit", "exit"}, {"/clear", "reset to system prompt"}, {"/save", "save session"}, {"/list", "list sessions"}, {"/load <id>", "load session"}, {"/compact", "compact context"}, {"/cfg <k> [v]", "get/set config"}, {"!<cmd>", "run shell command directly"}, {"/help", "show help"}} {
fmt.Println(c(fmt.Sprintf(" %-15s", kv[0]), 1, 32) + kv[1])
}
continue