@@ -94,7 +94,12 @@ func (h *Handler) handleTaskRequest(ctx context.Context, msg *protocol.Message)
9494 return fmt .Errorf ("failed to unmarshal task request: %w" , err )
9595 }
9696
97- slog .Info ("received task request" , "task_id" , req .TaskID , "operation" , req .Operation )
97+ logger := slog .With (
98+ "task_id" , req .TaskID ,
99+ "trace_id" , req .TraceID ,
100+ "operation" , req .Operation ,
101+ )
102+ logger .Info ("received task request" )
98103
99104 taskCtx , cancel := context .WithCancel (ctx )
100105 h .mu .Lock ()
@@ -104,7 +109,7 @@ func (h *Handler) handleTaskRequest(ctx context.Context, msg *protocol.Message)
104109 h .taskWg .Add (1 )
105110 go func () {
106111 defer h .taskWg .Done ()
107- h .executeAndSendResult (taskCtx , & req )
112+ h .executeAndSendResult (taskCtx , & req , logger )
108113 }()
109114 return nil
110115}
@@ -117,15 +122,19 @@ func (h *Handler) unregisterTask(taskID string) {
117122}
118123
119124// executeAndSendResult executes a task and sends the result.
120- func (h * Handler ) executeAndSendResult (ctx context.Context , req * protocol.TaskRequestPayload ) {
125+ func (h * Handler ) executeAndSendResult (ctx context.Context , req * protocol.TaskRequestPayload , logger * slog. Logger ) {
121126 defer h .unregisterTask (req .TaskID )
122127
123- result , err := h .executeTask (ctx , req )
128+ logger .Info ("executing task" )
129+
130+ result , err := h .executeTask (ctx , req , logger )
124131 if err != nil {
132+ logger .Error ("task execution failed" , "error" , err )
125133 h .sendTaskResult (req .TaskID , req .SourceInstanceID , false , nil , err .Error (), 1 )
126134 return
127135 }
128136
137+ logger .Info ("task completed successfully" )
129138 h .sendTaskResult (req .TaskID , req .SourceInstanceID , true , result , "" , 0 )
130139}
131140
@@ -137,7 +146,11 @@ func parseArgs[T any](data json.RawMessage) (*T, error) {
137146 return & args , nil
138147}
139148
140- func (h * Handler ) executeTask (ctx context.Context , req * protocol.TaskRequestPayload ) (any , error ) {
149+ func (h * Handler ) executeTask (ctx context.Context , req * protocol.TaskRequestPayload , logger * slog.Logger ) (any , error ) {
150+ if logger == nil {
151+ logger = slog .Default ()
152+ }
153+
141154 switch req .Operation {
142155 case protocol .TaskOpRead :
143156 args , err := parseArgs [protocol.ReadArgs ](req .Args )
@@ -196,15 +209,15 @@ func (h *Handler) executeTask(ctx context.Context, req *protocol.TaskRequestPayl
196209 if err != nil {
197210 return nil , fmt .Errorf ("invalid mcp_call args: %w" , err )
198211 }
199- slog .Info ("mcp_call task" ,
212+ logger .Info ("mcp_call task" ,
200213 "server_name" , args .Server .Name ,
201214 "server_transport" , args .Server .Transport ,
202215 "server_url" , args .Server .URL ,
203216 "tool_name" , args .ToolName ,
204217 "has_headers" , len (args .Server .Headers ) > 0 ,
205218 "has_dynamic_headers" , len (args .Server .DynamicHeaders ) > 0 ,
206219 )
207- return h .ws .MCPCall (ctx , args )
220+ return h .ws .MCPCall (ctx , args , logger )
208221
209222 case protocol .TaskOpMCPListTools :
210223 args , err := parseArgs [protocol.MCPListToolsArgs ](req .Args )
@@ -278,12 +291,15 @@ func (h *Handler) handleMCPCall(ctx context.Context, msg *protocol.Message) erro
278291 return fmt .Errorf ("failed to unmarshal mcp call: %w" , err )
279292 }
280293
294+ // Create logger for MCP call (no task_id/trace_id available in this context)
295+ logger := slog .Default ()
296+
281297 go func () {
282298 result , err := h .ws .MCPCall (ctx , & protocol.MCPCallArgs {
283299 Server : payload .Server ,
284300 ToolName : payload .ToolName ,
285301 Args : payload .Arguments ,
286- })
302+ }, logger )
287303 if err != nil {
288304 h .sendMCPResult (payload .CallID , false , nil , err .Error ())
289305 } else {
0 commit comments