Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 21 additions & 3 deletions application.go
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,24 @@ func (app *Application) saveConversationHistory() {
}

func (app *Application) generateProgressSummary(funcName string, args string) string {
return fmt.Sprintf("Calling %s...", funcName)
if args == "" || args == "{}" {
return fmt.Sprintf("%s()", funcName)
}
var m map[string]any
if err := json.Unmarshal([]byte(args), &m); err != nil || len(m) == 0 {
return fmt.Sprintf("%s()", funcName)
}
// json.Marshal sorts map keys for consistent output
compact, err := json.Marshal(m)
if err != nil {
return fmt.Sprintf("%s()", funcName)
}
argsStr := string(compact)
runes := []rune(argsStr)
if len(runes) > 50 {
argsStr = string(runes[:47]) + "..."
}
return fmt.Sprintf("%s %s", funcName, argsStr)
}

// clearProgress clears the progress line from stderr if one is currently displayed
Expand Down Expand Up @@ -620,7 +637,8 @@ func (app *Application) handleToolCalls(toolCalls []openai.ToolCall, opts CLIOpt

// handleMCPToolCall handles tool calls for MCP servers
func (app *Application) handleMCPToolCall(toolCall openai.ToolCall, opts CLIOptions) {
app.showToolProgress(toolCall.Function.Name, toolCall.Function.Arguments)
displayName := app.mcpManager.GetToolDisplayName(toolCall.Function.Name)
app.showToolProgress(displayName, toolCall.Function.Arguments)

// Parse the arguments
var arguments any
Expand Down Expand Up @@ -648,7 +666,7 @@ func (app *Application) handleMCPToolCall(toolCall openai.ToolCall, opts CLIOpti

// Format arguments for display
argsDisplay := formatArgsForDisplay(arguments)
displayCommand := fmt.Sprintf("# %s(%s)", toolCall.Function.Name, argsDisplay)
displayCommand := fmt.Sprintf("# %s(%s)", displayName, argsDisplay)
app.appendToolResult(toolCall, result, displayCommand, result)
}

Expand Down
14 changes: 14 additions & 0 deletions mcp.go
Original file line number Diff line number Diff line change
Expand Up @@ -514,6 +514,20 @@ func (m *MCPManager) GetAllTools() []openai.Tool {
return allTools
}

// GetToolDisplayName returns a human-friendly display name for an MCP tool,
// stripping the internal "mcp_<server>_" prefix and using "server:tool" format.
func (m *MCPManager) GetToolDisplayName(toolName string) string {
m.mu.RLock()
defer m.mu.RUnlock()
for serverName := range m.clients {
prefix := fmt.Sprintf("mcp_%s_", serverName)
if strings.HasPrefix(toolName, prefix) {
return fmt.Sprintf("%s:%s", serverName, strings.TrimPrefix(toolName, prefix))
}
}
return toolName
}

// CallTool calls a tool on the appropriate MCP server
func (m *MCPManager) CallTool(toolName string, arguments interface{}, askLevel string) (string, error) {
m.mu.RLock()
Expand Down