Skip to content

Commit 93da76b

Browse files
Ambient Code Botclaude
andcommitted
fix(cli): resolve send -f deadlock when SSE proxy buffers idle sessions
Reorder send.go to push the message before opening the SSE stream. The api-server SSE proxy blocks until the runner has an active run, so opening the stream first caused a deadlock. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent ccc9ed0 commit 93da76b

1 file changed

Lines changed: 9 additions & 14 deletions

File tree

  • components/ambient-cli/cmd/acpctl/session

components/ambient-cli/cmd/acpctl/session/send.go

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package session
33
import (
44
"context"
55
"fmt"
6-
"io"
76
"os"
87
"os/signal"
98

@@ -54,19 +53,6 @@ func runSend(cmd *cobra.Command, args []string) error {
5453
ctx, cancel := context.WithTimeout(cmd.Context(), cfg.GetRequestTimeout())
5554
defer cancel()
5655

57-
streamCtx, streamCancel := signal.NotifyContext(cmd.Context(), os.Interrupt)
58-
defer streamCancel()
59-
60-
var stream io.ReadCloser
61-
if sendFollow {
62-
s, err := client.Sessions().StreamEvents(streamCtx, sessionID)
63-
if err != nil {
64-
return fmt.Errorf("stream events: %w", err)
65-
}
66-
stream = s
67-
defer stream.Close()
68-
}
69-
7056
msg, err := client.Sessions().PushMessage(ctx, sessionID, payload)
7157
if err != nil {
7258
return fmt.Errorf("send message: %w", err)
@@ -78,5 +64,14 @@ func runSend(cmd *cobra.Command, args []string) error {
7864
return nil
7965
}
8066

67+
streamCtx, streamCancel := signal.NotifyContext(cmd.Context(), os.Interrupt)
68+
defer streamCancel()
69+
70+
stream, err := client.Sessions().StreamEvents(streamCtx, sessionID)
71+
if err != nil {
72+
return fmt.Errorf("stream events: %w", err)
73+
}
74+
defer stream.Close()
75+
8176
return renderSSEStream(stream, cmd.OutOrStdout(), sendFollowJSON, true)
8277
}

0 commit comments

Comments
 (0)