Skip to content

Commit a7c32fb

Browse files
committed
Sub-sessions shouldn't send the user message event
Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
1 parent 844c952 commit a7c32fb

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

pkg/runtime/runtime.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,9 @@ func (r *Runtime) RunStream(ctx context.Context, sess *session.Session) <-chan E
126126
events := make(chan Event, 128)
127127

128128
go func() {
129-
events <- UserMessage(sess.GetMessages(r.CurrentAgent())[len(sess.GetMessages(r.CurrentAgent()))-1].Content)
129+
if sess.SendUserMessage {
130+
events <- UserMessage(sess.GetMessages(r.CurrentAgent())[len(sess.GetMessages(r.CurrentAgent()))-1].Content)
131+
}
130132
events <- StreamStarted()
131133
a := r.team.Agent(r.currentAgent)
132134

@@ -658,11 +660,9 @@ func (r *Runtime) handleTaskTransfer(ctx context.Context, sess *session.Session,
658660

659661
slog.Debug("Creating new session with parent session", "parent_session_id", sess.ID, "tools_approved", sess.ToolsApproved)
660662
s := session.New(session.WithSystemMessage(memberAgentTask))
663+
s.SendUserMessage = false
661664
s.ToolsApproved = sess.ToolsApproved
662665

663-
// No delay needed: ToolCall event now carries the agent name so the CLI can
664-
// render deterministically before sub-agent output begins.
665-
666666
for event := range r.RunStream(ctx, s) {
667667
evts <- event
668668
if errEvent, ok := event.(*ErrorEvent); ok {

pkg/session/session.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ type Session struct {
5454
// ToolsApproved is a flag to indicate if the tools have been approved
5555
ToolsApproved bool `json:"tools_approved"`
5656

57+
// SendUserMessage is a flag to indicate if the user message should be sent
58+
SendUserMessage bool
59+
5760
InputTokens int `json:"input_tokens"`
5861
OutputTokens int `json:"output_tokens"`
5962
Cost float64 `json:"cost"`
@@ -164,12 +167,13 @@ func New(opts ...Opt) *Session {
164167
slog.Debug("Creating new session", "session_id", sessionID)
165168

166169
s := &Session{
167-
ID: sessionID,
168-
CreatedAt: time.Now(),
169-
Messages: make([]Item, 0),
170-
ToolsApproved: false,
171-
InputTokens: 0,
172-
OutputTokens: 0,
170+
ID: sessionID,
171+
CreatedAt: time.Now(),
172+
Messages: make([]Item, 0),
173+
ToolsApproved: false,
174+
InputTokens: 0,
175+
OutputTokens: 0,
176+
SendUserMessage: true,
173177
}
174178

175179
for _, opt := range opts {

0 commit comments

Comments
 (0)