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, and the line /stop interrupts the running turn. 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.
+// 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
+// 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 {
dir, err := dataDir()
if err != nil {
Text: line,
}
+ name, stop := stopSubagentName(line)
switch strings.TrimSpace(line) {
case "":
continue
request = SocketRequest{
Type: "interrupt",
}
+ default:
+ if stop {
+ request = SocketRequest{
+ Type: "stop",
+ Text: name,
+ }
+ }
}
err := encoder.Encode(request)