15 fmt.Fprintln(os.Stderr, "onechat:", err)
21 ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
27 _, err := fmt.Println("onechat")
31 case len(args) == 1 && args[0] == "login":
32 err := chatgptLogin(ctx, os.Stdout)
36 // A signal is the normal stop of the daemon and the client, so their
37 // result does not include ctx.Err().
38 case len(args) == 1 && args[0] == "daemon":
39 return daemon(ctx, os.Stdout)
40 case len(args) == 1 && args[0] == "chat":
41 return chat(ctx, os.Stdin, os.Stdout)
42 case len(args) > 0 && args[0] == "probe":
43 err := probe(ctx, args[1:], os.Stdout)
48 return fmt.Errorf("unknown command %q", strings.Join(args, " "))