@@ -3,6 +3,7 @@ package cmd
@@ -18,6 +19,7 @@ import (
18 "github.com/charmbracelet/crush/internal/tui"
19 "github.com/charmbracelet/crush/internal/tui"
19 "github.com/charmbracelet/crush/internal/version"
20 "github.com/charmbracelet/crush/internal/version"
20 "github.com/charmbracelet/fang"
21 "github.com/charmbracelet/fang"
22+ "github.com/charmbracelet/x/term"
21 "github.com/spf13/cobra"
23 "github.com/spf13/cobra"
@@ -99,6 +101,12 @@ to assist developers in writing, debugging, and understanding code directly from
99 // Initialize MCP tools early for both modes
101 // Initialize MCP tools early for both modes
100 initMCPTools(ctx, app)
102 initMCPTools(ctx, app)
104+ prompt, err = maybePrependStdin(prompt)
106+ logging.Error("Failed to read stdin: %v", err)
102 // Non-interactive mode
110 // Non-interactive mode
103 if prompt != "" {
111 if prompt != "" {
104 // Run non-interactive flow using the App method
112 // Run non-interactive flow using the App method
@@ -301,3 +309,21 @@ func init() {
301 return format.SupportedFormats, cobra.ShellCompDirectiveNoFileComp
309 return format.SupportedFormats, cobra.ShellCompDirectiveNoFileComp
313+func maybePrependStdin(prompt string) (string, error) {
314+ if term.IsTerminal(os.Stdin.Fd()) {
317+ fi, err := os.Stdin.Stat()
321+ if fi.Mode()&os.ModeNamedPipe == 0 {
324+ bts, err := io.ReadAll(os.Stdin)
328+ return string(bts) + "\n\n" + prompt, nil