var errTerminalDaemonClosed = errors.New("the daemon closed the connection")
// terminal runs "onechat chat": the terminal client of the daemon. Each line of
-// input is a user message, the line /stop interrupts the running turn, and the
-// line /stop NAME stops the subagent NAME. The client shows the replies, the
+// input is a user message, the line /stop interrupts the running turn, the line
+// /stop NAME stops the subagent NAME, and a line that starts with /whatsapp is
+// a WhatsApp command. The client shows the replies, the
// tool calls, and their results as they happen. It ends at the end of the input
// or when the daemon closes the connection.
func terminal(ctx context.Context, in io.Reader, out io.Writer) error {
}
name, stop := stopSubagentName(line)
- switch strings.TrimSpace(line) {
- case "":
+ args, whatsapp := whatsappCommandArgs(line)
+ switch {
+ case strings.TrimSpace(line) == "":
continue
- case stopCommand:
+ case strings.TrimSpace(line) == stopCommand:
request = SocketRequest{
Type: "interrupt",
}
- default:
- if stop {
- request = SocketRequest{
- Type: "stop",
- Text: name,
- }
+ case stop:
+ request = SocketRequest{
+ Type: "stop",
+ Text: name,
+ }
+ case whatsapp:
+ request = SocketRequest{
+ Type: "whatsapp",
+ Text: args,
}
}
return "[done]"
case "error":
return "[error] " + event.Text
+ case "notice":
+ return event.Text
default:
return ""
}