package toolstream import "strings" func trimWrappingJSONFence(prefix, suffix string) (string, string) { trimmedPrefix := strings.TrimRight(prefix, " \t\r\n") fenceIdx := strings.LastIndex(trimmedPrefix, "```") if fenceIdx < 0 { return prefix, suffix } // Only strip when the trailing fence in prefix behaves like an opening fence. // A legitimate closing fence before a standalone tool JSON must be preserved. if strings.Count(trimmedPrefix[:fenceIdx+3], "```")%2 == 0 { return prefix, suffix } fenceHeader := strings.TrimSpace(trimmedPrefix[fenceIdx+3:]) if fenceHeader != "" && !strings.EqualFold(fenceHeader, "json") { return prefix, suffix } trimmedSuffix := strings.TrimLeft(suffix, " \t\r\n") if !strings.HasPrefix(trimmedSuffix, "```") { return prefix, suffix } consumedLeading := len(suffix) - len(trimmedSuffix) return trimmedPrefix[:fenceIdx], suffix[consumedLeading+3:] }