MCPcopy
hub / github.com/wavetermdev/waveterm / processToolCall

Function processToolCall

pkg/aiusechat/usechat.go:303–327  ·  view source on GitHub ↗
(backend UseChatBackend, toolCall uctypes.WaveToolCall, chatOpts uctypes.WaveChatOpts, sseHandler *sse.SSEHandlerCh, metrics *uctypes.AIMetrics)

Source from the content-addressed store, hash-verified

301}
302
303func processToolCall(backend UseChatBackend, toolCall uctypes.WaveToolCall, chatOpts uctypes.WaveChatOpts, sseHandler *sse.SSEHandlerCh, metrics *uctypes.AIMetrics) uctypes.AIToolResult {
304 inputJSON, _ := json.Marshal(toolCall.Input)
305 logutil.DevPrintf("TOOLUSE name=%s id=%s input=%s approval=%q\n", toolCall.Name, toolCall.ID, utilfn.TruncateString(string(inputJSON), 40), toolCall.ToolUseData.Approval)
306
307 toolDef := chatOpts.GetToolDefinition(toolCall.Name)
308 result := processToolCallInternal(backend, toolCall, chatOpts, toolDef, sseHandler)
309
310 if result.ErrorText != "" {
311 log.Printf(" error=%s\n", result.ErrorText)
312 metrics.ToolUseErrorCount++
313 } else {
314 log.Printf(" result=%s\n", utilfn.TruncateString(result.Text, 40))
315 }
316
317 if toolDef != nil && toolDef.ToolLogName != "" {
318 metrics.ToolDetail[toolDef.ToolLogName]++
319 }
320
321 if toolCall.ToolUseData != nil {
322 _ = sseHandler.AiMsgData("data-tooluse", toolCall.ID, *toolCall.ToolUseData)
323 updateToolUseDataInChat(backend, chatOpts, toolCall.ID, *toolCall.ToolUseData)
324 }
325
326 return result
327}
328
329func processAllToolCalls(backend UseChatBackend, stopReason *uctypes.WaveStopReason, chatOpts uctypes.WaveChatOpts, sseHandler *sse.SSEHandlerCh, metrics *uctypes.AIMetrics) {
330 // Create and send all data-tooluse packets at the beginning

Callers 1

processAllToolCallsFunction · 0.85

Calls 6

DevPrintfFunction · 0.92
TruncateStringFunction · 0.92
processToolCallInternalFunction · 0.85
updateToolUseDataInChatFunction · 0.85
GetToolDefinitionMethod · 0.80
AiMsgDataMethod · 0.80

Tested by

no test coverage detected