@@ -182,18 +182,25 @@ func GetMessageItems(sty *styles.Styles, msg *message.Message, toolResults map[s
182 return []MessageItem{}
182 return []MessageItem{}
185−func GetToolMessageItem(sty *styles.Styles, tc message.ToolCall, result *message.ToolResult, canceled bool) MessageItem {
185+// GetToolRenderer returns the appropriate ToolRenderFunc for a given tool call.
186+// this should be used for nested tools as well.
187+func GetToolRenderer(tc message.ToolCall) ToolRenderFunc {
186 renderFunc := DefaultToolRenderer
188 renderFunc := DefaultToolRenderer
187− // we only do full width for diffs (as far as I know)
189 switch tc.Name {
189 switch tc.Name {
190 case tools.BashToolName:
190 case tools.BashToolName:
191 renderFunc = BashToolRenderer
191 renderFunc = BashToolRenderer
196+// GetToolMessageItem creates a MessageItem for a tool call and its result.
197+func GetToolMessageItem(sty *styles.Styles, tc message.ToolCall, result *message.ToolResult, canceled bool) MessageItem {
198+ // we only do full width for diffs (as far as I know)
199+ cappedWidth := tc.Name != tools.EditToolName && tc.Name != tools.MultiEditToolName
194 return NewToolMessageItem(
201 return NewToolMessageItem(
196− renderFunc,
203+ GetToolRenderer(tc),
199 canceled,
206 canceled,